2011-08-30 125 views
7

我在Windows 7 64bit上有一个.NET 3.5 WPF应用程序。我遇到了拖动和移动主应用程序窗口时发生的奇怪的系统冻结问题。基本上整个系统冻结(UI)并且应用程序停止渲染。 调出任务管理器(CTRL + ALT + DEL)解冻系统和应用程序。WPF应用程序冻结Windows 7

应用程序本身是一个在后台线程中处理大量消息的交易应用程序。

有没有人遇到过这类问题?特别是任务管理器解冻冻结的怪异。什么可能是这种奇怪的行为的原因?

我几乎可以肯定它与调度某些操作到UI线程有关。

+0

是的,我经历了CTRL + ALT + DELETE解冻一个冻结的系统。 –

+0

Favorite-ed:Oah ...我现在正在使用这种WPF应用程序,最后我想要冻结操作系统。我对这方面的任何数据感兴趣(即潜在的来源/这个问题的解决方案) – paercebal

+0

@David:你的情况下系统冻结的根本问题是什么? – Ender

回答

2

问题是WCF服务死锁。类似于this的问题

在处理消息传入消息的服务必须按以下方式在UI线程上添加到集合中。

Action action = new Action(() => 
      { 
       lock (_messagesLock) 
       { 
        _messages.Remove(message); 
       } 
      }); 
      _dispatcher.Invoke(DispatcherPriority.Normal, action); 

更改

_dispatcher.Invoke(DispatcherPriority.Normal, action); 

_dispatcher.BeginInvoke(DispatcherPriority.Normal, action); 

解决的问题。

+0

不适用于我(WPF for Win 8.1) –

4

在StackOverflow上发现了一些可能有所帮助的旧帖子,据说这可能是由于字体缓存。

“我有同样的问题,这是一个腐败的字体缓存!

的解决方案见http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/7cc032c1-5f4d-4518-adc6-f53afd051e6b

WPF Application Hang

这里是被要求的步骤采取。

在Win 7

1. Run services.msc 
2. Stop Windows Presentation Foundation Font Cache 3.0.0.0 service 
3. Delete FontCache3.0.0.0.dat 

in XP: 
%systemdrive%\Documents and Settings\LocalService\Local Settings\Application Data 

in Vista: %windir%\ServiceProfiles\LocalService\AppData\Local 

4. Restart the machine 

我所知道的是,你可以做到以下几点。

Windows操作系统有一个就设在这里的字体缓存文件:C:\ WINDOWS \ SYSTEM32 \ FNTCACHE.DAT

删除此文件,并重新启动系统。

+1

我已经试过这个解决方案,它没有帮助。 – Ender

1

由于WPF使用DirectX,您还应该确保DirectX和您的视频驱动程序是最新的并且正常工作。错误的视频卡或视频驱动程序可能会导致WPF出现问题,而这可能不会在其他Win32应用程序中出现。

0

如果您正在使用VS2010和运行在Win 7 64的WPF应用程序位回答了你的问题可能是这一个:通过改变视觉体验

提高性能你可能有一个问题VS2010中的硬件加速。因为这个原因,使用WPF构建渲染应用程序时遇到了问题。

试试看:http://blogs.msdn.com/b/zainnab/archive/2010/06/22/improving-performance-by-changing-the-visual-experience-vstipenv0017.aspx

如果不解决您的问题,去你的显卡设置(NVIDIA或AMD),做一个“重置设置”。然后再试一次。

+0

此问题在VS2010和生产环境中都会呈现(通过ClickOnce发布) – Ender