考虑下面的代码:
public void MyMethod()
{
bool flag=true;
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (x, y) =>
{
//time consuming task
if (flag)
{
//do something
}
};
worker.RunWorkerCompleted += (x, y) =>
{
if (flag)
{
//do something
}
};
worker.RunWorkerAsync();
}
也许是一个愚蠢的问题,但据我所知,在runworkerasync
调用之后,dowork
会引发在不同线程上运行其方法的事件。因为我觉得代码在调用后退出,所以在事件处理程序中检查局部变量的值是否flag
安全?dowork
MyMethod
worker.RunWorkerAsync