使用OmniThreadLibrary我想用另一个task1观看task2来检测task2是否停止或完成。目的是如果任务2由于任何原因而停止,则重新启动它。直到没有,我使用以下构造:
Task1 := CreateTask(
procedure(const mTask: IOmniTask)
begin
while not mTask.Terminated do
begin
Sleep(1000);
// create Task2 and run it, if it is not running
if Task2 = nil then
begin
Task2 := CreateTask(
procedure(const mTask: IOmniTask)
begin
while not mTask.Terminated do
begin
Sleep(1000);
end;
end)
.OnTerminated(procedure(const mTask: IOmniTaskControl)
begin
Task2 := nil;
end);
Task2.Run;
end;
end;
end)
.OnTerminated(
procedure(const mTask: IOmniTaskControl)
begin
Task1 := nil;
end);
Task1.Run;
如果我尝试使用此代码终止内部task2
Task2.Terminate(10000);
我收到以下错误:
TOmniEventMonitorPool.Release:未为线程分配监视器 xxx。
相同的代码适用于task1:
Task1.Terminate(10000);
两个问题:
预先感谢