soo*_*ise 6 c# backgroundworker winforms
假设我有一个像这样的后台工作者:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while(true)
{
//Kill zombies
}
}
Run Code Online (Sandbox Code Playgroud)
如何让这个后台工作者开始和停止使用WinForm上的按钮?
Ste*_*don 17
也许你可以使用像这样的手动重复测试,我没有调试这个,但值得一试.如果它有效,你就不会让它在等待的时候旋转它的轮子
ManualResetEvent run = new ManualResetEvent(true);
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while(run.WaitOne())
{
//Kill zombies
}
}
private void War()
{
run.Set();
}
private void Peace()
{
run.Reset();
}
Run Code Online (Sandbox Code Playgroud)
使用CancelAsync方法.
backgroundworker1.CancelAsync();
Run Code Online (Sandbox Code Playgroud)
在你的工作线程里面的循环中.
if (backgroundWorker.CancellationPending) return;
Run Code Online (Sandbox Code Playgroud)
这不会立即发生.