2011-04-17 102 views
8

我有一個在.NET 3.5上運行的獨立WPF應用程序。每隔一段時間,顯示屏都會凍結幾秒鐘。在經常更新內容的屏幕上,這一點非常明顯。顯示問題的Here is a videoWPF臨時顯示凍結

顯示器被凍結時,界面保持響應(video)。

我遇到過一些其他類似問題的帖子,他們將其歸因於SW/HW渲染問題。爲了安全起見,我完全禁用了HW渲染,但仍然存在問題。

我在凍結過程中運行了一個文件監視器,看看是否有一些特殊的文件訪問或活動正在進行,但沒有什麼不尋常的。

最後說明:目標平臺是一個沒有太多內存或功率(512 MB)的小型觸摸屏平板電腦。我只在目標上看到這個問題,從來沒有在我的開發PC上使用,它的資源方式更多。

UPDATE

我以爲我已經通過去除一些動畫代碼解決了該問題,但沒有奏效。我仍然遇到這個問題,而我正處於我的繩索末端。

這裏的一些更多的事情我已經試過:

  • 升級到.NET 4.0。同樣的行爲。
  • 增加調試代碼到可以通過DispatcherTimer被調用的所有方法(這被稱爲UI線程),以確保他們沒有被舉起的UI。

我真的很難倒在這裏,並添加了賞金。正如我所提到的,該問題僅出現在目標PC上(link)。

+0

什麼是你的操作系統和顯卡的固定內存泄漏? – 2011-04-17 21:14:59

+0

@FractalizeR - 這是個人電腦,但我使用的是自定義Windows Embedded Standard映像。 http://www.icpamerica.com/products/LCD_products/embedded_pa​​nel_PC/afl_057a_lx.html – BabaBooey 2011-04-17 21:34:51

回答

1

的罪魁禍首是以下方法調用:

new HwndSource(new HwndSourceParameters()); 

將其加入到我的應用程序,因爲它在.NET 3.5補丁的內存泄漏問題。這種解決方法可以找到here。如果我刪除這個調用,渲染問題就會消失。

我拿出電話,以另一種方式(除動畫故事板,並使用代碼而不是後面)

2

我傾向於懷疑任何.NET GC或OS交換文件時,這種行爲的出現。

對於前者,你可以試試.NET性能計數器監視可疑的活動。

如果設備交換文件,您可以禁用它,看看行爲的變化。

正如其他人所說,一個分析器(或隔離什麼條件引起的延遲是什麼 - 甚至只是附加在問題發生時打破了調試器)將得到更多信息的好方法。

+0

我已經運行了一些性能工具,同時行爲被展示出來,沒有發現任何不尋常的事情(ANTS Performance Profiler和Perforator)。我將檢查交換文件的情況。目標上我沒有Visual Studio的空間,所以我必須進行遠程調試。 – BabaBooey 2011-04-20 18:37:32

+0

我忘記了目標PC使用的是緊湊型閃存。不建議使用閃存進行分頁,因此我已經關閉了分頁。 – BabaBooey 2011-04-20 18:44:04