Tuesday, August 1, 2023

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 – Microsoft-Support

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.

    1. Klicken Sie auf Start , dann auf Ausführen , geben Sie regedit ein und drücken Sie dann die EINGABETASTE.

    2. Suchen Sie den folgenden Registrierungsunterschlüssel und klicken Sie darauf:

      HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics

    3. 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 .

    4. 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