End*_*der 7 .net c# wpf multithreading
我.NET 3.5 WPF
在Windows 7 64bit上有一个应用程序.我遇到拖动和移动主应用程序窗口时发生的奇怪的系统冻结问题.基本上整个系统冻结(UI),应用程序停止渲染.启动任务管理器(CTRL+ ALT+ DEL)会解冻系统和应用程序.
应用程序本身是一个交易应用程序,它在后台线程中处理大量消息.
有没有人遇到过这类问题?特别是任务管理器解锁冻结的奇怪之处.这种奇怪行为的原因是什么?
我几乎可以肯定它与将某些操作分派给UI线程有关.
问题是 WCF 服务死锁。类似的问题
在处理消息的服务中,传入消息必须按以下方式在 UI 线程上添加到集合中。
Action action = new Action(() =>
{
lock (_messagesLock)
{
_messages.Remove(message);
}
});
_dispatcher.Invoke(DispatcherPriority.Normal, action);
Run Code Online (Sandbox Code Playgroud)
改变
_dispatcher.Invoke(DispatcherPriority.Normal, action);
Run Code Online (Sandbox Code Playgroud)
到
_dispatcher.BeginInvoke(DispatcherPriority.Normal, action);
Run Code Online (Sandbox Code Playgroud)
解决了问题。
归档时间: |
|
查看次数: |
6280 次 |
最近记录: |