【发布时间】:2013-09-28 10:56:04
【问题描述】:
我目前正在试验 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。我想做的是:
- 在等待值时让任务在后台运行
- 如果引发异常,我希望主线程捕获它
- 允许主线程确定任务是完成还是取消
是否有可能做一个非阻塞函数来完成所有这些?
提前谢谢你,
V.
编辑:添加问题
【问题讨论】:
标签: multithreading delphi omnithreadlibrary