Как обрабатывать финализацию IOmniParallelJoin в OmniThreadLibrary?

Я использую IOmniParallelJoin для параллельного вычисления нескольких задач с функцией NoWait, потому что я хочу, чтобы графический интерфейс оставался отзывчивым. Но мне также нужно знать, когда вычисления закончены. Есть ли какое-либо событие, которое запускается в таком случае?


person Yuriy Chachora    schedule 09.11.2014    source источник


Ответы (1)


Вы можете либо использовать функцию OnStop для ввода некоторого кода, либо использовать конфигурацию задачи через TaskConfig и назначить код через OnTerminated. Разница в том, что OnStop вызывается внутри одного из рабочих потоков, а OnTerminated вызывается внутри основного потока.

person Uwe Raabe    schedule 09.11.2014
comment
Еще одно отличие, которое я заметил, заключается в том, что событие OnTerminated будет вызываться столько раз, сколько потоков (задач) присоединяются. Как поступить в ситуации, когда требуется запустить код в основном потоке только один раз? - person Yuriy Chachora; 09.11.2014