Problembeschreibung
Stellen Sie sich folgendes Szenario vor:
-
Sie führen eine Microsoft .NET Framework 3.5 Service Pack 1 (SP1)-basierte WPF-Anwendung (Windows Presentation Foundation) aus.
-
Die WPF-Anwendung verwendet die Hardwarerenderingpipeline.
-
Die Anwendung lädt und entlädt viele Anwendungsdomänen, die eine oder mehrere benutzerdefinierte WPF-Add-In-Komponenten enthalten.
In diesem Szenario trifft die Anwendung auf eine System.Runtime.InteropServices.COMException-Ausnahme, und die Anwendung stürzt dann ab.
Lösung
Informationen zum Hotfix
Ein unterstützter Hotfix ist von Microsoft verfügbar. Dieser Hotfix soll jedoch nur das in diesem Artikel beschriebene Problem beheben. Wenden Sie diesen Hotfix nur auf Systeme an, bei denen dieses spezifische Problem auftritt. Dieser Hotfix erhält möglicherweise zusätzliche Tests. Wenn Sie von diesem Problem nicht stark betroffen sind, empfiehlt es sich daher, auf das nächste Softwareupdate zu warten, das diesen Hotfix enthält.
Um diesen Hotfix aus der MSDN Code Gallery herunterzuladen, besuchen Sie die folgende Microsoft-Website:http://code.msdn.microsoft.com/KB2276690Hinweis In der MSDN Code Gallery werden die Sprachen angezeigt, für die der Hotfix verfügbar ist. Wenn Ihre Sprache nicht aufgeführt wird, liegt dies daran, dass die Ressourcenseite des Codekatalogs für diese Sprache nicht verfügbar ist. Hinweis Wenn zusätzliche Probleme auftreten oder eine Problembehandlung erforderlich ist, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Die üblichen Supportkosten gelten für zusätzliche Supportfragen und -probleme, die nicht für diesen spezifischen Hotfix geeignet sind. Eine vollständige Liste der Telefonnummern für Den Microsoft-Kundendienst und -Support oder zum Erstellen einer separaten Serviceanfrage finden Sie auf der folgenden Microsoft-Website:
http://support.microsoft.com/contactus/?ws=support
Voraussetzungen
Um diesen Hotfix anwenden zu können, muss .NET Framework 3.5 Service Pack 1 (SP1) installiert sein.
Neustartanforderung
Sie müssen den Computer nicht neu starten, nachdem Sie diesen Hotfix angewendet haben.
Ersetzte Hotfixes
Dieser Hotfix ersetzt keinen anderen Hotfix.
Dateiinformationen
Die englische Version dieses Hotfixes weist die in der nachstehenden Tabelle aufgelisteten Dateiattribute (oder höher) auf. Datums- und Uhrzeitangaben für diese Dateien sind in der "Universal Time Coordinated" (UTC) angegeben. Wenn Sie die Dateiinformationen anzeigen, werden diese Angaben in die Ortszeit umgewandelt. Den Unterschied zwischen UTC- und Ortszeit können Sie in der Systemsteuerung unter Datum und Uhrzeit mithilfe der Angaben auf der Registerkarte Zeitzone ermitteln.
Für alle unterstützten x86-basierten Versionen von Windows Server 2003 und Windows XP
File name |
Dateiversion |
Dateigröße |
Datum |
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 |
Für alle unterstützten x64-basierten Versionen von Windows Server 2003 und Windows XP
File name |
Dateiversion |
Dateigröße |
Datum |
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 |
Für alle unterstützten x86-basierten Versionen von Windows Vista Service Pack 2 (SP2) und Windows Server 2008 Service Pack 2 (SP2)
File name |
Dateiversion |
Dateigröße |
Datum |
Time |
Platform |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
09.09.2010 |
10:52 |
x86 |
Presentationfontcache.exe.config |
Nicht zutreffend |
161 |
03-Apr-2009 |
2,125 |
Nicht zutreffend |
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.09.2010 |
10:52 |
x86 |
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
09.09.2010 |
10:52 |
x86 |
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
09.09.2010 |
10:52 |
x86 |
Für alle unterstützten x64-basierten Versionen von Windows Vista SP2 und Windows Server 2008 SP2
File name |
Dateiversion |
Dateigröße |
Datum |
Time |
Platform |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
09.09.2010 |
10:52 |
x64 |
Presentationfontcache.exe.config |
Nicht zutreffend |
161 |
03-Apr-2009 |
20:58 |
Nicht zutreffend |
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.09.2010 |
10:52 |
x64 |
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
09.09.2010 |
10:52 |
x64 |
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
09.09.2010 |
10:52 |
x64 |
Für alle unterstützten x86-basierten Versionen von Windows 7
File name |
Dateiversion |
Dateigröße |
Datum |
Time |
Platform |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.5012 |
4,218,880 |
11.09.2010 |
01:29 |
x86 |
Presentationfontcache.exe.config |
Nicht zutreffend |
161 |
10.Juni 2009 |
21:14 |
Nicht zutreffend |
Wpfgfx_v0300.dll |
3.0.6920.4902 |
1,736,536 |
10.Juni 2009 |
21:14 |
x86 |
Presentationframework.dll |
3.0.6920.5012 |
5,279,744 |
11.09.2010 |
01:29 |
x86 |
Presentationhostdll.dll |
3.0.6920.5012 |
130,408 |
11.09.2010 |
01:29 |
x86 |
Presentationhost.exe |
4.0.31106.0 |
295,264 |
11.09.2010 |
01:29 |
x86 |
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
11.09.2010 |
01:29 |
x86 |
Windowsbase.dll |
3.0.6920.5012 |
1,253,376 |
11.09.2010 |
01:29 |
x86 |
Alle unterstützten x64-basierten Versionen von Windows 7 und Windows Server 2008 R2
File name |
Dateiversion |
Dateigröße |
Datum |
Time |
Platform |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.5012 |
3,997,696 |
11.09.2010 |
01:28 |
x64 |
Presentationfontcache.exe.config |
Nicht zutreffend |
161 |
10.Juni 2009 |
20:30 |
Nicht zutreffend |
Wpfgfx_v0300.dll |
3.0.6920.4902 |
2,255,176 |
10.Juni 2009 |
20:30 |
x64 |
Presentationframework.dll |
3.0.6920.5012 |
4,636,672 |
11.09.2010 |
01:28 |
x64 |
Presentationhostdll.dll |
3.0.6920.5012 |
171,368 |
11.09.2010 |
01:28 |
x64 |
Presentationhost.exe |
4.0.31106.0 |
320,352 |
11.09.2010 |
01:28 |
x64 |
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
11.09.2010 |
01:28 |
x64 |
Windowsbase.dll |
3.0.6920.5012 |
1,114,112 |
11.09.2010 |
01:28 |
x64 |
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Problemumgehung
Um dieses Problem zu umgehen, deaktivieren Sie die Hardwarerenderingpipeline, und aktivieren Sie dann die Softwarerenderingpipeline.
Verwenden Sie eine der folgenden Methoden, um die Hardwarerenderingpipeline zu deaktivieren und die Softwarerenderingpipeline zu aktivieren:-
Legen Sie die System.Windows.Interop.RenderMode-Enumeration fest.
Im Folgenden finden Sie einen Beispielcode, der die System.Windows.Interop.RenderMode-Enumeration festlegt, um die Softwarerenderingpipeline zu aktivieren, wenn ein WPF-Fenster geladen wird: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; } -
Legen Sie den Registrierungsschlüssel DisableHWAcceleration fest.
Wichtig Dieser Abschnitt, diese Methode oder aufgabe enthält Schritte, die Ihnen mitteilen, wie Sie die Registrierung ändern. Durch die falsche Bearbeitung der Registrierung können schwerwiegende Probleme verursacht werden. Daher ist es wichtig, bei der Ausführung der folgenden Schritte sorgfältig vorzugehen. Als Schutzmaßnahme sollten Sie vor der Bearbeitung der Registrierung eine Sicherungskopie erstellen. So ist gewährleistet, dass Sie die Registrierung wiederherstellen können, falls ein Problem auftritt. Weitere Informationen zum Erstellen und Wiederherstellen einer Sicherungskopie der Registrierung finden Sie im folgenden Artikel der Microsoft Knowledge Base:322756 Sichern und Wiederherstellen der Registrierung in Windows Warnung Diese Methode deaktiviert die Hardwarerenderingpipeline für alle WPF-Anwendungen auf dem Computer. Daher wird die Methode normalerweise nicht empfohlen, außer wenn die Kunden die Umgebungen steuern und die Auswirkungen für alle WPF-Anwendungen nicht beeinträchtigen.
-
Klicken Sie auf Start, klicken Sie auf Ausführen, geben Sie regedit ein, und drücken Sie dann die EINGABETASTE.
-
Klicken Sie auf den folgenden Registrierungsunterschlüssel:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics
-
Legen Sie den Wert des Registrierungseintrags DisableHWAcceleration auf 1 fest.
Hinweis Wenn der Registrierungseintrag DisableHWAcceleration nicht vorhanden ist, klicken Sie mit der rechten Maustaste auf den Registrierungsunterschlüssel, zeigen Sie auf Neu, und klicken Sie dann auf Zeichenfolgenwert , um einen neuen Registrierungseintrag zu erstellen. Geben Sie DisableHWAcceleration als Namen des neuen Registrierungseintrags ein, doppelklicken Sie auf DisableHWAcceleration, und ändern Sie dann die DisableHWAcceleration-Wertdaten in 1. -
Beenden Sie den Registrierungs-Editor.
-
Weitere Informationen
Weitere Informationen zur Softwarerenderingpipeline finden Sie auf der folgenden Website des Microsoft Developer Network (MSDN):Allgemeine Informationen zur Softwarerenderingpipeline . Weitere Informationen zu den Registrierungseinstellungen des WPF-Renderings finden Sie auf der folgenden MSDN-Website:Allgemeine Informationen zu den Registrierungseinstellungen des WPF-Renderings . Weitere Informationen zur System.Windows.Interop.RenderMode-Enumeration finden Sie auf der folgenden MSDN-Website:Allgemeine Informationen zur Enumeration "System.Windows.Interop.RenderMode"