【发布时间】:2012-10-05 21:29:44
【问题描述】:
在我必须维护的旧应用程序中进行一些取证考古调查时,我遇到了这个:
这是一个最近转换为 .NET 4.0 的 WPF 应用程序,此代码在后台工作程序中运行
if(bgWorker1.IsBusy || bgWorker2.IsBusy)
{
Thread.Sleep(100);
Application.Current.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Background,
new System.Threading.ThreadStart(delegate { })
);
}
1 - 通过使用无操作委托调用线程(主 gui)可以实现什么可能的副作用。其他两个线程也在主 gui 线程上执行调用,但只有这个线程将优先级设置为 Normal 以外的其他内容(尽管它们使用 Action 而不是 TreadStart)。
2 - 我遇到的情况奇怪地类似于此应用程序的死锁,并且某些情况告诉我这可能是原因。 (无缘无故地围绕优先级和主 gui 线程)。
谢谢
【问题讨论】:
-
在我看来毫无意义...
-
调用可能会阻塞,直到主线程处理完消息。
标签: c# wpf multithreading noop