-3

私がする必要があるのは、ループを停止/継続するフラグ付きのボタンを1つか2つ追加することです。どうすればいいですか?

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    while(true)
    {
        cpuView();
        gpuView();
        Thread.Sleep(1000);
    }
}
4

3 に答える 3

1

私のお勧めは、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);
    }
}
于 2012-08-05T16:59:04.810 に答える
0

キャンセルおよび一時停止ステータスのブール値を持つカスタム クラスを作成します。そのクラスのオブジェクトを 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);
    }
}
于 2012-08-05T16:59:37.517 に答える