長時間実行されるwinforms app
タスクと 2 つのボタンがあります。ワンボタンスタートとワンストップ。
開始ボタンを押すと、キャンセルトークンを持つ新しいタスクが開始されます。Stop ボタンを押すと、キャンセル トークンの Cancel メソッドが呼び出されます。
UI を常に使用できるようにしたいので、このジョブの try と catch ブロックをどこに配置しますか。私が見たすべての例で、t.Wait(); の周りに配置しました。
しかし、それを行うとUIがフリーズします。それが、最初にタスクを使用した理由であり、タスクを実行しながらUIを使用し続けます。では、Task.Wait を使用せずに try catch ブロックをどこに置くか。
スタートボタン:
tokenSource2 = new CancellationTokenSource();
ct = tokenSource2.Token;
t = new Task(doStart, ct);
t.Start();
停止ボタン:
tokenSource2.Cancel();