当 OTL 踏板仍在使用 IOmniCancellationToken 时关闭 MainForm 不会终止线程。使用以下任务配置代码
私人取消令牌:IOmniCancellationToken;
CancelToken := CreateOmniCancellationToken;
FWorker := Parallel.ForEach(0, CalcList.Count-1)
.TaskConfig(Parallel.TaskConfig.OnMessage(Self))
.TaskConfig(Parallel.TaskConfig.CancelWith(CancelToken))
.NumTasks(nMax)
.NoWait
.OnStop(procedure (const task: IOmniTask)
begin
task.Invoke(procedure begin
FWorker := nil;
end);
end);
FWorker
.Execute(
procedure (const value: integer)
begin
CalcUnit.EntrySearch(value);
end);
Form.CloseCancelToken.Signal ;
使窗体关闭,线程从“Parallel.ForEach worker”变为“idle Thread worker”,但线程不会终止。程序挂起。为什么线程不终止?我做错了什么?