【发布时间】:2014-04-21 18:57:26
【问题描述】:
我正在尝试让一个后台工作人员在主线程中运行一个微调器,我想等到后台工作人员完成。目前我可以有一个或另一个。我尝试使用自动重置事件,但它锁定了主线程,因此不显示微调器。是否有类似于自动重置事件的东西不会锁定主 UI。
这是我的一些代码
BackgroundWorker _bWorker = new BackgroundWorker();
_bWorker.DoWork += _bWorker_DoWork ;
_bWorker.RunWorkerCompleted += _bWorker_RunWorkerCompleted;
AutoResetEvent are = new AutoResetEvent(false);
_bWorker.RunWorkerAsync();
// Wait here until the background worker is finished
are.WaitOne();
...
private void _bWorker_DoWork(object sender, DoWorkEventArgs e)
{
// Show spinner
WaitSpinnerAdornerText = "Working";
IsWaitSpinnerVisible = true;
...
are.Set();
}
private void _bWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
IsWaitSpinnerVisible = false;
...
}
有什么想法吗?欢迎任何帮助!提前致谢。
【问题讨论】:
-
您使用的是哪个版本的 .net?
-
尝试将 are.Set() 移到 Completed
-
@Sriram 我正在使用 .NET 4.0
标签: wpf .net-4.0 thread-safety backgroundworker autoresetevent