1

タスク オン デマンドを強制終了するにはどうすればよいですか? 私がこれを行うとき:

CreateTask(TWorker.Create())
                    .Invoke(@TWorker.Execute)
                    .MonitorWith(FEventMonitor)
                    .SetParameter('ThreadID',i)
                    .Join(FWorkers)
                    .WithLock(FLockToken).Schedule(GlobalOmniThreadPool).WaitFor(0);



if Assigned(FWorkers) then begin
  // FWorkers.TerminateAll; freeze 
     FWorkers.TerminateAll(0); // freeze
     FWorkers:=nil;
     GlobalOmniThreadPool.CancelAll;
     Log('All tasks stopped',Form1.Memo1);
  end
   else begin
   Log('Nothing to stop',Form1.Memo1);
  end;

メインアプリケーションがフリーズします。実行中のタスクが 1 つしかない場合でも、デバッガーの外部で実行するか、デバッガーの内部で実行するかは問題ではありません。

このコードをタスクに 30 回入れたくないからです。ユーザーとプログラマーにとってイライラします。

If GlobalCancel=true then
Task.Terminate;

これなしでグローバルにこれを行う方法があるはずです。

4

0 に答える 0