执行中未处理的异常IOmniParallelTask
应该(据我了解文档)由 OTL 捕获并附加到IOmniTaskControl
实例,该实例可以由termination handler
from访问IOmniTaskConfig
。
所以在用这样的设置IOmniParallelTask
实例之后termination handler
:
fTask := Parallel.ParallelTask.NoWait.NumTasks(1);
fTask.OnStop(HandleOnTaskStop);
fTask.TaskConfig(Parallel.TaskConfig.OnTerminated(HandleOnTaskThreadTerminated));
fTask.Execute(TaskToExecute);
内的任何未处理的异常TaskToExecute
:
procedure TFormMain.TaskToExecute;
begin
Winapi.Windows.Sleep(2000);
raise Exception.Create('async operation exeption');
end;
应该附加到IOmniTaskControl
您在以下范围内获得的实例termination handler
:
procedure TFormMain.HandleOnTaskThreadTerminated(const task: IOmniTaskControl);
begin
if not Assigned(task.FatalException) then
Exit;
memo.Lines.Add('an exception occured: ' + task.FatalException.Message);
end;
此时的问题是,没有分配异常,IOmniTaskControl.FatalException
我不知道为什么。
也许你们中的一些人对我做错了什么有一些想法。整个 VCL 示例项目可以在这里找到:https ://github.com/stackoverflow-samples/OTLTaskException