私がする必要があるのは、ループを停止/継続するフラグ付きのボタンを1つか2つ追加することです。どうすればいいですか?
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while(true)
{
cpuView();
gpuView();
Thread.Sleep(1000);
}
}
私がする必要があるのは、ループを停止/継続するフラグ付きのボタンを1つか2つ追加することです。どうすればいいですか?
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while(true)
{
cpuView();
gpuView();
Thread.Sleep(1000);
}
}
私のお勧めは、MSDN のサンプル コード(BackgroundWorker Class (MSDN) )を読むことです。彼らの例は、ワーカーをキャンセルする適切な方法を示しています。
break
を使用してループを終了することもできます。
bool stop = false;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while(true)
{
if(stop)
break; // this will exit the while loop
cpuView();
gpuView();
Thread.Sleep(1000);
}
}
キャンセルおよび一時停止ステータスのブール値を持つカスタム クラスを作成します。そのクラスのオブジェクトを backgroundWorker.DoWork([instance of MyCustomObject here]) args に渡します
ボタン イベントを使用して、元のスレッドからプロパティを更新できます。
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
MyCustomObject cancellationStatus = e.Argument as MyCustomObject
while(!cancellationStatus.Cancelled)
{
if(!cancellationStatus.Paused)
{
cpuView();
gpuView();
}
Thread.Sleep(1000);
}
}