Mar*_*arc 4 .net c# backgroundworker
有没有办法直接"重启"后台工作人员?调用CancelAsync()后跟RunWorkerAsync()显然不会这样做,因为他们的名字暗示.
背景信息:我有一个后台工作者,它在我的.net 2.0 Windows窗体应用程序中计算总数.每当用户修改任何属于此总数的值时,我都想重新启动后台工作程序,以防它运行,以便直接考虑最新值.
backgriound工作本身不做任何改造.
当您调用bgw.CancelAsync它时,在后台工作程序上设置一个标志,您需要在DoWork处理程序中检查自己.
就像是:
bool _restart = false;
private void button1_Click(object sender, EventArgs e)
{
bgw.CancelAsync();
_restart = true;
}
private void bgw_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 300; i++)
{
if (bgw.CancellationPending)
{
break;
}
//time consuming calculation
}
}
private void bgw_WorkComplete(object sender, eventargs e) //no ide to hand not sure on name/args
{
if (_restart)
{
bgw.RunWorkerAsync();
_restart = false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12658 次 |
| 最近记录: |