徵兆
請試想下列案例:
-
您執行 Microsoft .NET Framework 3.5 Service Pack 1 (SP1) 型 Windows Presentation Foundation (WPF) 應用程式。
-
WPF 應用程式使用硬體轉譯管線。
-
應用程式會載入及卸載包含一或多個自定義 WPF 載入宏元件的許多應用程式網域。
在此案例中,應用程式會遇到 System.Runtime.InteropServices.COMException 例外狀況,然後應用程式當機。
解決方案
Hotfix 資訊
支援的 hotfix 可從 Microsoft 取得。 不過,此 Hotfix 僅是為了修正本文所述的問題。 僅將此 Hotfix 套用至發生此特定問題的系統。 這個 Hotfix 可能會收到額外的測試。 因此,如果您未受到此問題嚴重影響,建議您等待下一次包含此 Hotfix 的軟體更新。 若要從 MSDN 程式代碼庫下載此 Hotfix,請瀏覽下列Microsoft網站:
http://code.msdn.microsoft.com/KB2276690注意 MSDN 程式代碼庫會顯示 Hotfix 可用的語言。 如果您沒有看到列出您的語言,這是因為 [程序代碼庫] 資源頁面無法使用該語言。 注意 如果發生其他問題或需要進行任何疑難解答,您可能需要建立個別的服務要求。 一般支持費用將適用於其他不符合此特定 Hotfix 資格的支持問題。 如需Microsoft客戶服務和支持電話號碼的完整清單,或建立個別的服務要求,請流覽下列Microsoft網站:
http://support.microsoft.com/contactus/?ws=support
先決條件
若要套用此 Hotfix,您必須安裝 .NET Framework 3.5 Service Pack 1 (SP1) 。
重新啟動需求
套用此 Hotfix 之後,您不需要重新啟動電腦。
Hotfix 取代資訊
這個 hotfix 不會取代任何其他 hotfix。
檔案資訊
此 hotfix 的英文版本具有 (或更新版本的文件屬性) 列於下表中。 這些檔案的日期和時間是以 Coordinated Universal Time (UTC) 表示。 當您檢視檔案資訊時,它會轉換為當地時間。 若要查看 UTC 與當地時間的差異,請使用 [控制台] 中 [日期和時間] 項目的 [時區] 索引標籤。
適用於所有支援的 x86 版本的 Windows Server 2003 和 Windows XP
|
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
02-Sep-2010 |
01:32 |
x86 |
|
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
02-Sep-2010 |
01:28 |
x86 |
|
Presentationhost.exe |
4.0.40305.0 |
295,264 |
02-Sep-2010 |
01:28 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
02-Sep-2010 |
01:32 |
x86 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
02-Sep-2010 |
01:32 |
x86 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
02-Sep-2010 |
01:32 |
x86 |
適用於所有支援的 x64 型 Windows Server 2003 和 Windows XP 版本
|
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
02-Sep-2010 |
00:53 |
x64 |
|
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
02-Sep-2010 |
00:48 |
x64 |
|
Presentationhost.exe |
4.0.31106.0 |
320,352 |
02-Sep-2010 |
00:48 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
02-Sep-2010 |
00:53 |
x64 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
02-Sep-2010 |
00:53 |
x64 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
02-Sep-2010 |
00:53 |
x64 |
適用於所有支援的 x86 版本的 Windows Vista Service Pack 2 (SP2) 和 Windows Server 2008 Service Pack 2 (SP2)
|
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
09-Sep-2010 |
10:52 |
x86 |
|
Presentationfontcache.exe.config |
不適用 |
161 |
03-Apr-2009 |
2,125 |
不適用 |
|
Wpfgfx_v0300.dll |
3.0.6920.4003 |
1,736,024 |
17-Jun-2009 |
03:08 |
x86 |
|
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
09-Sep-2010 |
10:52 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
09-Sep-2010 |
10:52 |
x86 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
09-Sep-2010 |
10:52 |
x86 |
適用於所有支援的 x64 型 Windows Vista SP2 和 Windows Server 2008 SP2 版本
|
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
09-Sep-2010 |
10:52 |
x64 |
|
Presentationfontcache.exe.config |
不適用 |
161 |
03-Apr-2009 |
20:58 |
不適用 |
|
Wpfgfx_v0300.dll |
3.0.6920.4003 |
2,254,168 |
17-Jun-2009 |
03:08 |
x64 |
|
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
09-Sep-2010 |
10:52 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
09-Sep-2010 |
10:52 |
x64 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
09-Sep-2010 |
10:52 |
x64 |
適用於所有支援的 x86 型 Windows 7 版本
|
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.5012 |
4,218,880 |
2010年9月11日 |
01:29 |
x86 |
|
Presentationfontcache.exe.config |
不適用 |
161 |
10-Jun-2009 |
21:14 |
不適用 |
|
Wpfgfx_v0300.dll |
3.0.6920.4902 |
1,736,536 |
10-Jun-2009 |
21:14 |
x86 |
|
Presentationframework.dll |
3.0.6920.5012 |
5,279,744 |
2010年9月11日 |
01:29 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.5012 |
130,408 |
2010年9月11日 |
01:29 |
x86 |
|
Presentationhost.exe |
4.0.31106.0 |
295,264 |
2010年9月11日 |
01:29 |
x86 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
2010年9月11日 |
01:29 |
x86 |
|
Windowsbase.dll |
3.0.6920.5012 |
1,253,376 |
2010年9月11日 |
01:29 |
x86 |
適用於所有支援的 x64 型 Windows 7 和 Windows Server 2008 R2 版本
|
檔案名稱 |
檔案版本 |
檔案大小 |
日期 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.5012 |
3,997,696 |
2010年9月11日 |
01:28 |
x64 |
|
Presentationfontcache.exe.config |
不適用 |
161 |
10-Jun-2009 |
20:30 |
不適用 |
|
Wpfgfx_v0300.dll |
3.0.6920.4902 |
2,255,176 |
10-Jun-2009 |
20:30 |
x64 |
|
Presentationframework.dll |
3.0.6920.5012 |
4,636,672 |
2010年9月11日 |
01:28 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.5012 |
171,368 |
2010年9月11日 |
01:28 |
x64 |
|
Presentationhost.exe |
4.0.31106.0 |
320,352 |
2010年9月11日 |
01:28 |
x64 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
2010年9月11日 |
01:28 |
x64 |
|
Windowsbase.dll |
3.0.6920.5012 |
1,114,112 |
2010年9月11日 |
01:28 |
x64 |
狀態
Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。
因應措施
若要解決此問題,請停用硬體轉譯管線,然後啟用軟體轉譯管線。 若要停用硬體轉譯管線,並啟用軟體轉譯管線,請使用下列其中一種方法:
-
設定 System.Windows.Interop.RenderMode 列舉。下列是一些範例程式代碼,用於設定 System.Windows.Interop.RenderMode 列舉,以便在載入 WPF 視窗時啟用軟體轉譯管線:
private void OnLoaded(object sender, EventArgs e){System.Windows.Interop.HwndSource hwndSource = PresentationSource.FromVisual(this) as System.Windows.Interop.HwndSource;System.Windows.Interop.HwndTarget hwndTarget = hwndSource.CompositionTarget; hwndTarget.RenderMode = System.Windows.Interop.RenderMode.SoftwareOnly;}
-
設定 DisableHWAcceleration 登錄機碼。重要:本節、方法或工作包含可告訴您如何修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為加強保護,請先備份登錄再進行修改。 這樣一來,如果發生問題,您就可以還原登錄。 如需有關如何備份和還原登錄的詳細資訊,請按下列文件編號,檢視「Microsoft 知識庫」中的文章:
322756 如何備份及還原 Windows中的登錄警告 此方法會停用計算機上所有 WPF 應用程式的硬體轉譯管線。 因此,除了客戶控制環境且不介意所有 WPF 應用程式的影響外,通常不鼓勵使用此方法。
-
按兩下 [開始],按兩下 [ 執行],輸入 regedit,然後按 ENTER。
-
找出並按一下下列登錄子機碼:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics
-
將 DisableHWAcceleration 登錄專案的值設為 1。注意 如果 DisableHWAcceleration 登錄專案不存在,請以滑鼠右鍵按兩下登錄子機碼,指向 [新增],然後按兩下 [字串值 ] 以建立新的登錄專案。 為新登錄專案的名稱輸入 DisableHWAcceleration ,按兩下 [DisableHWAcceleration],然後將 DisableHWAcceleration 值數據變更為 1。
-
結束 [登錄編輯程式]。
-
其他相關資訊
如需軟體轉譯管線的詳細資訊,請造訪下列Microsoft開發人員網路 (MSDN) 網站:軟體轉譯管線的一般資訊如需 WPF 轉譯登錄設定的詳細資訊,請造訪下列 MSDN 網站:WPF 轉譯登錄設定的一般資訊如需 System.Windows.Interop.RenderMode 列舉的詳細資訊,請造訪下列 MSDN 網站:「System.Windows.Interop.RenderMode」列舉的一般資訊