Eine „COMException"-Ausnahme führt zum Absturz einer auf .NET Framework 3.5 SP1 basierenden WPF-Anwendung, wenn die Anwendung die Anwendungsdomänen häufig lädt und entlädt
Symptome
Stellen Sie sich das folgende Szenario vor:
Sie führen eine auf Microsoft .NET Framework 3.5 Service Pack 1 (SP1) basierende Windows Presentation Foundation (WPF)-Anwendung aus.
Die WPF-Anwendung verwendet die Hardware-Rendering-Pipeline.
Die Anwendung lädt und entlädt viele Anwendungsdomänen, die eine oder mehrere benutzerdefinierte WPF-Add-In-Komponenten enthalten.
In diesem Szenario stößt die Anwendung auf eine System.Runtime.InteropServices.COMException-Ausnahme und stürzt dann ab.
Auflösung
Hotfix-Informationen
Ein unterstützter Hotfix ist von Microsoft erhältlich. Dieser Hotfix soll jedoch nur das in diesem Artikel beschriebene Problem beheben. Wenden Sie diesen Hotfix nur auf Systemen an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise weiteren Tests unterzogen. Wenn Sie von diesem Problem nicht schwerwiegend betroffen sind, empfehlen wir Ihnen daher, auf das nächste Software-Update zu warten, das diesen Hotfix enthält.
Um diesen Hotfix aus der MSDN-Codegalerie herunterzuladen, besuchen Sie die folgende Microsoft-Website:
http://code.msdn.microsoft.com/KB2276690
Hinweis In der MSDN-Codegalerie werden die Sprachen angezeigt, für die der Hotfix verfügbar ist. Wenn Ihre Sprache nicht aufgeführt ist, liegt das daran, dass die Ressourcenseite der Codegalerie für diese Sprache nicht verfügbar ist.
Hinweis Wenn weitere Probleme auftreten oder eine Fehlerbehebung erforderlich ist, müssen Sie möglicherweise eine separate Serviceanfrage erstellen. Für weitere Supportfragen und Probleme, die für diesen speziellen Hotfix nicht in Frage kommen, fallen die üblichen Supportkosten an. Eine vollständige Liste der Microsoft-Kundendienst- und Support-Telefonnummern oder zum Erstellen einer separaten Serviceanfrage finden Sie auf der folgenden Microsoft-Website:
http://support.microsoft.com/contactus/?ws=support
Voraussetzungen
Um diesen Hotfix anzuwenden, muss .NET Framework 3.5 Service Pack 1 (SP1) installiert sein.
Neustartanforderung
Sie müssen den Computer nach der Installation dieses Hotfixes nicht neu starten.
Informationen zum Hotfix-Ersatz
Dieser Hotfix ersetzt keinen anderen Hotfix.
Dateiinformationen
Die englische Version dieses Hotfixes verfügt über die Dateiattribute (oder spätere Dateiattribute), die in der folgenden Tabelle aufgeführt sind. Die Datums- und Uhrzeitangaben für diese Dateien werden in der koordinierten Weltzeit (UTC) angegeben. Wenn Sie die Dateiinformationen anzeigen, werden diese in die Ortszeit konvertiert. Um den Unterschied zwischen UTC und Ortszeit zu ermitteln, verwenden Sie die Registerkarte „Zeitzone " im Element „Datum und Uhrzeit" in der Systemsteuerung.
Für alle unterstützten x86-basierten Versionen von Windows Server 2003 und Windows XP
Dateinamen | Dateiversion | Dateigröße | Datum | Zeit | Plattform |
---|---|---|---|---|---|
Presentationcore.dll | 3.0.6920.4033 | 4.218.880 | 02.09.2010 | 01:32 | x86 |
Presentationframework.dll | 3.0.6920.4033 | 5.279.744 | 02.09.2010 | 01:28 | x86 |
Presentationhost.exe | 4.0.40305.0 | 295.264 | 02.09.2010 | 01:28 | x86 |
Presentationhostdll.dll | 3.0.6920.4033 | 130.408 | 02.09.2010 | 01:32 | x86 |
Presentationhostproxy.dll | 4.0.31106.0 | 99.176 | 02.09.2010 | 01:32 | x86 |
Windowsbase.dll | 3.0.6920.4033 | 1.249.280 | 02.09.2010 | 01:32 | x86 |
Für alle unterstützten x64-basierten Versionen von Windows Server 2003 und Windows XP
Dateinamen | Dateiversion | Dateigröße | Datum | Zeit | Plattform |
---|---|---|---|---|---|
Presentationcore.dll | 3.0.6920.4033 | 3.997.696 | 02.09.2010 | 00:53 | x64 |
Presentationframework.dll | 3.0.6920.4033 | 4.636.672 | 02.09.2010 | 00:48 | x64 |
Presentationhost.exe | 4.0.31106.0 | 320.352 | 02.09.2010 | 00:48 | x64 |
Presentationhostdll.dll | 3.0.6920.4033 | 171.368 | 02.09.2010 | 00:53 | x64 |
Presentationhostproxy.dll | 4.0.31106.0 | 109.928 | 02.09.2010 | 00:53 | x64 |
Windowsbase.dll | 3.0.6920.4033 | 1.110.016 | 02.09.2010 | 00:53 | x64 |
Für alle unterstützten x86-basierten Versionen von Windows Vista Service Pack 2 (SP2) und von Windows Server 2008 Service Pack 2 (SP2)
Dateinamen | Dateiversion | Dateigröße | Datum | Zeit | Plattform |
---|---|---|---|---|---|
Presentationcore.dll | 3.0.6920.4033 | 4.218.880 | 09.09.2010 | 10:52 | x86 |
Presentationfontcache.exe.config | Unzutreffend | 161 | 03.04.2009 | 21:25 | Unzutreffend |
Wpfgfx_v0300.dll | 3.0.6920.4003 | 1.736.024 | 17. Juni 2009 | 08:03 | 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
Dateinamen | Dateiversion | Dateigröße | Datum | Zeit | Plattform |
---|---|---|---|---|---|
Presentationcore.dll | 3.0.6920.4033 | 3.997.696 | 09.09.2010 | 10:52 | x64 |
Presentationfontcache.exe.config | Unzutreffend | 161 | 03.04.2009 | 20:58 | Unzutreffend |
Wpfgfx_v0300.dll | 3.0.6920.4003 | 2.254.168 | 17. Juni 2009 | 08:03 | 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
Dateinamen | Dateiversion | Dateigröße | Datum | Zeit | Plattform |
---|---|---|---|---|---|
Presentationcore.dll | 3.0.6920.5012 | 4.218.880 | 11. September 2010 | 01:29 | x86 |
Presentationfontcache.exe.config | Unzutreffend | 161 | 10. Juni 2009 | 21:14 | Unzutreffend |
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. September 2010 | 01:29 | x86 |
Presentationhostdll.dll | 3.0.6920.5012 | 130.408 | 11. September 2010 | 01:29 | x86 |
Presentationhost.exe | 4.0.31106.0 | 295.264 | 11. September 2010 | 01:29 | x86 |
Presentationhostproxy.dll | 4.0.31106.0 | 99.176 | 11. September 2010 | 01:29 | x86 |
Windowsbase.dll | 3.0.6920.5012 | 1.253.376 | 11. September 2010 | 01:29 | x86 |
Für alle unterstützten x64-basierten Versionen von Windows 7 und Windows Server 2008 R2
Dateinamen | Dateiversion | Dateigröße | Datum | Zeit | Plattform |
---|---|---|---|---|---|
Presentationcore.dll | 3.0.6920.5012 | 3.997.696 | 11. September 2010 | 01:28 | x64 |
Presentationfontcache.exe.config | Unzutreffend | 161 | 10. Juni 2009 | 20:30 | Unzutreffend |
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. September 2010 | 01:28 | x64 |
Presentationhostdll.dll | 3.0.6920.5012 | 171.368 | 11. September 2010 | 01:28 | x64 |
Presentationhost.exe | 4.0.31106.0 | 320.352 | 11. September 2010 | 01:28 | x64 |
Presentationhostproxy.dll | 4.0.31106.0 | 109.928 | 11. September 2010 | 01:28 | x64 |
Windowsbase.dll | 3.0.6920.5012 | 1.114.112 | 11. September 2010 | 01:28 | x64 |
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Gilt für" aufgeführt sind.
Problemumgehung
Um dieses Problem zu umgehen, deaktivieren Sie die Hardware-Rendering-Pipeline und aktivieren Sie dann die Software-Rendering-Pipeline.
Um die Hardware-Rendering-Pipeline zu deaktivieren und die Software-Rendering-Pipeline zu aktivieren, verwenden Sie eine der folgenden Methoden:
Legen Sie die System.Windows.Interop.RenderMode-Enumeration fest.
Im Folgenden finden Sie Beispielcode, der die System.Windows.Interop.RenderMode-Enumeration festlegt, um die Software-Rendering-Pipeline 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 diese Aufgabe enthält Schritte, die Ihnen erklären, wie Sie die Registrierung ändern. Allerdings können schwerwiegende Probleme auftreten, wenn Sie die Registrierung falsch ändern. Stellen Sie daher sicher, dass Sie diese Schritte sorgfältig befolgen. Für zusätzlichen Schutz sichern Sie die Registrierung, bevor Sie sie ändern. Anschließend können Sie die Registrierung wiederherstellen, wenn ein Problem auftritt. Für weitere Informationen zum Sichern und Wiederherstellen der Registrierung klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:322756 Anleitung zum Sichern und Wiederherstellen der Registrierung in Windows
Warnung: Diese Methode deaktiviert die Hardware-Rendering-Pipeline für alle WPF-Anwendungen auf dem Computer. Daher wird die Methode normalerweise nicht empfohlen, es sei denn, die Kunden kontrollieren die Umgebungen und stören sich nicht an den Auswirkungen auf alle WPF-Anwendungen.Klicken Sie auf Start , dann auf Ausführen , geben Sie regedit ein und drücken Sie dann die EINGABETASTE.
Suchen Sie den folgenden Registrierungsunterschlüssel und klicken Sie darauf:
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 Wertdaten von DisableHWAcceleration in 1 .Beenden Sie den Registrierungseditor.
Mehr Informationen
Weitere Informationen zur Software-Rendering-Pipeline finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:
Allgemeine Informationen zur Software-Rendering-Pipeline
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 „System.Windows.Interop.RenderMode"-Enumeration
No comments:
Post a Comment