2013-05-07 74 views
3

我正在編程一個WPF應用程序。我在一些窗口中使用BitmapCache,就像這樣:過程「系統」導致CPU使用率過高

CacheMode = new BitmapCache() { 
      EnableClearType = false, 
      RenderAtScale = 2, 
      SnapsToDevicePixels = false; } 

然後:

  1. 運行我的機應用,CPU使用率是正常的。
  2. 按Ctrl + Alt鍵+德爾,顯示任務管理器,命名爲 「系統」 的過程中顯示的CPU使用率過高。

進程瀏覽器示出,它是由這些2個線程導致問題:

NTOSKRNL.EXE WheaAttemptPhysicalPageOffline + 0x350
dxgmms1.sys VidMmInterface + 0x26500

我用!英特爾高清顯卡。

這是一個WPF,直接或圖形驅動程序的錯誤?有人知道嗎?

+2

高了多久?多高?爲什麼它應該是一個bug? – 2013-05-07 10:45:49

+0

它會持續幾分鐘,WPF屏幕將被凍結。 – wzpchina 2013-05-08 00:54:08

回答

3

「系統」過程是一個虛假的過程,顯示在環0中運行的Windows代碼的統計信息。例如,設備驅動程序就在那裏。 Dxgmms1.sys是DirectX的內存管理器。 WPF使用DirectX來渲染圖形。位圖可以使用大量內存。

因此,使用位圖在DirectX相關設備驅動程序中花費大量CPU時間的WPF應用程序並不是什麼神祕之處。英特爾高清顯卡是圖形加速器的最低價廉價實現。在AMD或NVidea視頻卡上花費50美元可能會很快修復。不要求WPF縮放位圖或限制它需要渲染的速度,因爲視覺樹已失效,這可能是另一個快速修復。

+0

是的,這個問題在NVidea顯卡中不會發生。 – wzpchina 2013-05-09 06:52:31

+0

我發現,當我顯示一個窗口並設置bitmapcahce時,它也不會發生。但是,當我顯示多個窗口,它也不會發生,如果我在第一個顯示窗口中設置bitmapCache。如果我在第二個顯示窗口中設置了bitmapCache,就會發生這種情況。這很好奇。 – wzpchina 2013-05-09 06:58:53

相關問題