-3

我需要做的是添加一个或两个带有标志的按钮,该标志将停止/继续循环。我该怎么做 ?

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]) 参数中从该类传递一个对象

您可以使用按钮事件从原始线程更新属性。

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 回答
0

首先,您创建一个执行任务的方法。然后将类的实例声明Threading

Threading thrd=new Threading(signature of method defined)

然后在您想要的任何按钮中编写一个事件处理程序。

t.start()
t.abort()
t.resume()

是开始停止或恢复线程的方法

于 2012-08-05T18:16:25.787 回答