2011-08-30 121 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