当我将 Visual Studio 2010 配置从 Debug 更改为 Release 时,我得到了一个非常奇怪的行为:
我有一个BackgroundWorker
: _bg
,在DoWork
我有:
iswaiting = true;
_bg.ReportProgress(1, filePath);
while (iswaiting)
{
;
}
//My other part of code (EDIT: something do to with the `result` I get from the user.)
在ProgressChanged
我有一个MessageBox
和用户交互之后,iswaiting
将设置回false并且_bg
DoWork
程序将继续。
void _bg_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//my other part of code........
result = Microsoft.Windows.Controls.MessageBox.Show("Question" ,"Title", MessageBoxButton.YesNoCancel, MessageBoxImage.Warning);
iswaiting=false;
log(iswaiting.toString());
}
当我从 Visual Studio 运行它或在Debug模式下构建时,所有这些工作都非常好,但是当我将它构建到Release时,我永远不会退出while(iswaiting)
循环,尽管我可以从日志中看到iswaiting
已经设置回false
.
编辑:
更好的方法是非常受欢迎的!