【发布时间】:2017-05-15 09:08:58
【问题描述】:
我需要为Parallel.Async 后台任务分配更高的任务优先级。由于 OmniThreadLibrary 有 SetPriority:如何为这个 Parallel.Async 任务设置特定的优先级?
uses
CodeSiteLogging,
OtlParallel, OtlTaskControl, OtlTask;
procedure TForm2.btnParallelAsyncClick(Sender: TObject);
begin
CodeSite.Send('btnParallelAsyncClick 1');
Parallel.Async(
procedure(const task: IOmniTask)
var
a: Integer;
begin
// executed in background thread:
a := 1 + 1;
Sleep(2000);
CodeSite.Send('Executed in Async Thread', a);
task.Invoke( // used to execute code in main thread
procedure
begin
CodeSite.Send('task.Invoke executed in main thread', a);
end);
Sleep(2000);
CodeSite.Send('Again executed in Async Thread', a);
end,
Parallel.TaskConfig.OnTerminated(
procedure(const task: IOmniTaskControl)
begin
// executed in main thread:
CodeSite.Send('After background thread termination: Executed in Main Thread');
end
)
);
CodeSite.Send('btnParallelAsyncClick 2');
end;
【问题讨论】:
标签: delphi delphi-10.1-berlin omnithreadlibrary