Taskの終了を監視する(C# WPF)

C#

Taskには処理が終わったかどうかを返すIsCompletedプロパティがあります。
Taskの処理が終わるまで待機するWaitメソッドもあります。

この辺を組み合わせると、Whileループで処理中には再実行不可できますし、実行完了後に処理を加えたりできます。

private bool stop;
private Task someTask = Task.CompletedTask;

public void StartMethod()
{
  if(!this.someTask.IsCompleted)
  {
    return;
  }

  this.someTask = Task.Run( () => 
  { 
    while(!stop)
    {
      Something();
    }
  });
}

public void StopMethod()
{
  this.stop = true;
  this.captureTask.Wait();
  this.stop = false;
}

コメント