我如何在没有 的情况下运行任务TOmniEventMonitor
?如果我在没有它的情况下启动它们,主线程就会冻结。这没有任何意义,因为OmniThreadLibrary
应该基于TThread
. UnObserved
并没有真正解决这个问题,因为它只是制作同一事物的内部副本。
type
TWorker = class(TOmniWorker)
function Initialize: Boolean; override;
constructor Create;
end;
begin
var
Task: IOmniTaskControl;
begin
Task := CreateTask(TWorker.Create()).Run; // blocks main thread
Task := CreateTask(TWorker.Create()).UnObserved.Run; // will create internal monitor each time
Task := CreateTask(TWorker.Create()).OnTerminated().Run; // will create internal monitor each time
end.
如果我创建一个TThread
它不需要任何类型的“监视器”,它也不会阻塞主线程。我没有发送任何类型的消息,为什么需要“监视器”?