【发布时间】:2009-02-27 11:03:06
【问题描述】:
我希望我用了正确的术语
我的目标是这样的(我意识到它不会那样工作):
private bool someBool = false;
BackgroundWorker bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(DoLengthyTask);
bg.RunWorkerCompleted += new RunWorkerCompletedEventHandler(
()=>
{
someBool = true;
Logger.Info("Finished");
}
)
重要的部分是 RunWorkerCompletedEventHandler 被定义在原始调用者的范围内并且可以访问调用者的变量。
这可能吗?它会在 someBool 上产生可能的竞争条件吗?
【问题讨论】:
-
还有什么可以访问布尔值?这对于了解可能的竞争条件至关重要......
-
主线程中的东西会访问布尔值。在这个(虚构的)示例中,记录器中的某一行可能会在以后添加。
标签: c# multithreading lambda