10.04.2015, 15:07 | #1 |
Участник
|
Как передать для Thread временные таблицы?
Ax2009. Как передать в новую нить (Thred) содержимое временной таблицы?
У меня пока единственная идея - это конвертация содержимого таблицы в нечто более примитивное. Например, в контейнер через buf2con() / con2buf(). Но, может есть варианты без конвертации? PS: GlobalCache - не работает, поскольку в новом Thread получаю чистый (новый) GlobalCache Пока работаю так: X++: // Вызов Thread void run() { Thread thread; Container conHeader; ; while select headerData { conHeader += [global::buf2con(headerData)]; } thread = new Thread(); thread.setInputParm([conHeader]); thread.removeOnComplete(true); thread.run(classnum(MyClass), staticmethodstr(MyClass, runThread)); thread.waitUntilSignaled(); infolog.import(thread.getOutputParm()); } // Обработка static void runThread(Thread _thread) { container packedArgs; container conHeader; container conValue; int nextI; MyClass report; TmpTable headerData; ; report = new MyClass(); packedArgs = _thread.getInputParm(); conHeader = conPeek(packedArgs, 1); for (nextI = 1; nextI <= conLen(conHeader); nextI++) { conValue = conPeek(conHeader, nextI); global::con2buf(conValue, headerData); headerData.insert(); } // Метод через setTmpData() актуализирует временную таблицу в контексте класса report.setHeaderData(headerData); // Выполнение report.run(); _thread.setOutputParm(infolog.copy(1,infolog.num())); }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|