Sco*_*ain 6 .net c# backgroundworker
我有很多的方法(它们只在一次运行一个虽然),它们都使用相同RunWorkerCompleated和ProgressChanged方法,但它们都具有不同的Dowork方法.执行以下操作是否安全:
private void button_Process_Click(object sender, EventArgs e)
{
bgWork_Process.DoWork += Scrub_DoWork;
bgWork_Process.RunWorkerAsync();
bgWork_Process.DoWork -= Scrub_DoWork;
}
Run Code Online (Sandbox Code Playgroud)
或者我能做到这样的边缘案例?我没有在MSDN上看到任何关于它的信息,说它不被允许,并且它(到目前为止)在我的程序中正常运行,但是我想在这里查看是否有人遇到麻烦这样做.
为了确保事件处理程序在完成之前不会被删除,您可以执行以下操作:
Action DoWorkAction;
private void button_Process_Click(object sender, EventArgs e)
{
gbHistory.Enabled = false;
gbScrub.Enabled = false;
DoWorkAction = new Action(Scrub_DoWork);
bgWork_Process.DoWork += DoWorkAction;
bgWork_Process.RunWorkerAsync();
}
Run Code Online (Sandbox Code Playgroud)
并以任何方式处理你的完成
private void bgWork_Process_CompletedHandler(object sender, EventArgs e)
{
bgWork_Process.DoWork -= DoWorkAction;
}
Run Code Online (Sandbox Code Playgroud)
然而,我确实感觉到;最好将BackGroundWorkers您需要执行的所有操作分开,而不是共享类似的操作或包装在一个类中,这样您就可以更清楚自己在做什么。
| 归档时间: |
|
| 查看次数: |
651 次 |
| 最近记录: |