我目前正在尝试使用 OmniThreadLibrary。附上我的代码:
procedure TMainForm.LongWait;
begin
Task := Parallel.Future<string>(
function: string
begin
Sleep(10000);
Result := 'Done';
end,
Parallel.TaskConfig.OnTerminated(
procedure
begin
if Task.IsDone then
MessageDlg('Complete', mtInformation, [mbOK], 0)
else
MessageDlg('Exception', mtError, [mbCancel], 0)
end)
);
end;
我会调用 LongWait() 并且它可以正常工作而不会阻塞 UI。我想做的是:
- 让任务在等待值的同时在后台运行
- 如果引发异常,我希望主线程捕获它
- 允许主线程确定任务是完成还是取消
是否有可能做一个非阻塞函数来完成所有这些?
先感谢您,
五。
编辑:添加问题