Parallel.Async( class procedure Async(task: TProc; taskConfig: IOmniTaskConfig = nil); overload; class procedure Async(task: TOmniTaskDelegate; taskConfig: IOmniTaskConfig = nil); overload; class procedure Async(task: TProc; onTermination: TProc; taskConfig: IOmniTaskConfig = nil); overload; class procedure Async(task: TOmniTaskDelegate; onTermination: TProc; taskConfig: IOmniTaskConfig = nil); overload;
As it turned out, two of them are not necessary anymore. Since the introduction of the taskConfig parameter, termination procedure can also be specified by setting taskConfig.OnTerminated.
To make the matter simpler, I’ve removed both Asyncs that accept the onTermination parameter.
class procedure Async(task: TProc; taskConfig: IOmniTaskConfig = nil); overload; class procedure Async(task: TOmniTaskDelegate; taskConfig: IOmniTaskConfig = nil); overload;The old way of setting termination handler …
Parallel.Async( procedure begin // executed in background thread Sleep(500); MessageBeep($FFFFFFFF); end, procedure (const task: IOmniTaskControl) begin // executed in main thread btnAsync.Enabled := true; end ) );… must be replaced with slightly more verbose
Parallel.Async( procedure begin // executed in background thread Sleep(500); MessageBeep($FFFFFFFF); end, Parallel.TaskConfig.OnTerminated( procedure (const task: IOmniTaskControl) begin // executed in main thread btnAsync.Enabled := true; end ) );
Source : Here
0 comments:
Post a Comment