Objawy
Rozważmy następujący scenariusz:
- Uruchamiasz aplikację opartą na platformie Microsoft .NET Framework 3.5 z dodatkiem Service Pack 1 (SP1) dla platformy Microsoft .NET Framework (Windows Presentation Foundation (WPF).
- Aplikacja WPF używa potoku renderowania sprzętowego.
- Aplikacja ładuje i zwalnia wiele domen aplikacji, które zawierają jeden lub więcej niestandardowych składników dodatku WPF.
W tym scenariuszu aplikacja napotka wyjątek System.Runtime.InteropServices.COMException, a następnie aplikacja ulegnie awarii.
Rozwiązanie
Informacje o poprawkach
Obsługiwana poprawka jest dostępna w firmie Microsoft. Jednak ta poprawka ma na celu rozwiązanie tylko problemu opisanego w tym artykule. Tę poprawkę należy stosować tylko do systemów, w których występuje ten konkretny problem. Ta poprawka może zostać poddana dodatkowym testom. Dlatego jeśli ten problem nie dotyczy użytkownika, zaleca się zaczekać na następną aktualizację oprogramowania zawierającą tę poprawkę.
Aby pobrać tę poprawkę z galerii kodów MSDN, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://code.msdn.microsoft.com/KB2276690
Uwaga: w galerii kodów MSDN są wyświetlane języki, dla których dostępna jest poprawka. Jeśli nie widzisz swojego języka na liście, oznacza to, że strona zasobu Galerii kodu nie jest dostępna dla tego języka.
Uwaga W przypadku wystąpienia dodatkowych problemów lub konieczności rozwiązania problemu może być konieczne utworzenie osobnego zgłoszenia serwisowego. Normalne koszty pomocy technicznej będą dotyczyć dodatkowych pytań oraz problemów, które nie kwalifikują się do objęcia tą poprawką. Aby uzyskać pełną listę numerów telefonów działu obsługi klienta i pomocy technicznej firmy Microsoft lub utworzyć oddzielne żądanie obsługi, odwiedź następującą witrynę firmy Microsoft w sieci Web:
http://support.microsoft.com/contactus/?ws=support
Wymagania wstępne
Aby zastosować tę poprawkę, musisz mieć zainstalowany program .NET Framework 3.5 z dodatkiem Service Pack 1 (SP1).
Wymóg ponownego uruchomienia
Po zastosowaniu tej poprawki nie jest konieczne ponowne uruchomienie komputera.
Informacje o zastępowaniu poprawek
Ta poprawka nie zastępuje żadnej innej poprawki.
Informacje o plikach
Angielska wersja tej poprawki ma atrybuty pliku (lub nowsze atrybuty pliku) wymienione w poniższej tabeli. Daty i godziny dla tych plików są wyświetlane według uniwersalnego czasu koordynowanego (UTC). Informacje o pliku są konwertowane na czas lokalny. Aby znaleźć różnicę między czasem UTC a czasem lokalnym, użyj karty Strefa czasowa w elemencie Data i godzina w Panelu sterowania.
Dla wszystkich obsługiwanych wersji systemów Windows Server 2003 i Windows XP dla komputerów z procesorami x86
| Nazwa pliku | Wersja pliku | Rozmiar pliku | Data | Godzina | Platforma |
|---|---|---|---|---|---|
| Presentationcore.dll | 3.0.6920.4033 | 4,218,880 | 02-wrzesień-2010 | 01:32 | x86 |
| Presentationframework.dll | 3.0.6920.4033 | 5,279,744 | 02-wrzesień-2010 | 01:28 | x86 |
| Presentationhost.exe | 4.0.40305.0 | 295,264 | 02-wrzesień-2010 | 01:28 | x86 |
| Presentationhostdll.dll | 3.0.6920.4033 | 130,408 | 02-wrzesień-2010 | 01:32 | x86 |
| Presentationhostproxy.dll | 4.0.31106.0 | 99,176 | 02-wrzesień-2010 | 01:32 | x86 |
| Windowsbase.dll | 3.0.6920.4033 | 1,249,280 | 02-wrzesień-2010 | 01:32 | x86 |
Dla wszystkich obsługiwanych wersji systemów Windows Server 2003 i Windows XP dla komputerów z procesorami x64
| Nazwa pliku | Wersja pliku | Rozmiar pliku | Data | Godzina | Platforma |
|---|---|---|---|---|---|
| Presentationcore.dll | 3.0.6920.4033 | 3,997,696 | 02-wrzesień-2010 | 00:53 | x64 |
| Presentationframework.dll | 3.0.6920.4033 | 4,636,672 | 02-wrzesień-2010 | 00:48 | x64 |
| Presentationhost.exe | 4.0.31106.0 | 320,352 | 02-wrzesień-2010 | 00:48 | x64 |
| Presentationhostdll.dll | 3.0.6920.4033 | 171,368 | 02-wrzesień-2010 | 00:53 | x64 |
| Presentationhostproxy.dll | 4.0.31106.0 | 109,928 | 02-wrzesień-2010 | 00:53 | x64 |
| Windowsbase.dll | 3.0.6920.4033 | 1,110,016 | 02-wrzesień-2010 | 00:53 | x64 |
Dotyczy wszystkich obsługiwanych wersji systemu Windows Vista z dodatkiem Service Pack 2 (SP2) i systemu Windows Server 2008 z dodatkiem Service Pack 2 (SP2) dla komputerów z procesorami x86
| Nazwa pliku | Wersja pliku | Rozmiar pliku | Data | Godzina | Platforma |
|---|---|---|---|---|---|
| Presentationcore.dll | 3.0.6920.4033 | 4,218,880 | 09-Wrzesień-2010 | 10:52 | x86 |
| Presentationfontcache.exe.config | Nie dotyczy | 161 | 03-kwi-2009 | 21:25 | Nie dotyczy |
| Wpfgfx_v0300.dll | 3.0.6920.4003 | 1,736,024 | 17-cze-2009 | 08:03 | x86 |
| Presentationframework.dll | 3.0.6920.4033 | 5,279,744 | 09-Wrzesień-2010 | 10:52 | x86 |
| Presentationhostdll.dll | 3.0.6920.4033 | 130,408 | 09-Wrzesień-2010 | 10:52 | x86 |
| Windowsbase.dll | 3.0.6920.4033 | 1,249,280 | 09-Wrzesień-2010 | 10:52 | x86 |
Dla wszystkich obsługiwanych wersji systemu Windows Vista z dodatkiem SP2 i dodatku SP2 dla systemów Windows Server 2008 dla komputerów z procesorami x64
| Nazwa pliku | Wersja pliku | Rozmiar pliku | Data | Godzina | Platforma |
|---|---|---|---|---|---|
| Presentationcore.dll | 3.0.6920.4033 | 3,997,696 | 09-Wrzesień-2010 | 10:52 | x64 |
| Presentationfontcache.exe.config | Nie dotyczy | 161 | 03-kwi-2009 | 20:58 | Nie dotyczy |
| Wpfgfx_v0300.dll | 3.0.6920.4003 | 2,254,168 | 17-cze-2009 | 08:03 | x64 |
| Presentationframework.dll | 3.0.6920.4033 | 4,636,672 | 09-Wrzesień-2010 | 10:52 | x64 |
| Presentationhostdll.dll | 3.0.6920.4033 | 171,368 | 09-Wrzesień-2010 | 10:52 | x64 |
| Windowsbase.dll | 3.0.6920.4033 | 1,110,016 | 09-Wrzesień-2010 | 10:52 | x64 |
Dla wszystkich obsługiwanych wersji systemu Windows 7 opartych na architekturze x86
| Nazwa pliku | Wersja pliku | Rozmiar pliku | Data | Godzina | Platforma |
|---|---|---|---|---|---|
| Presentationcore.dll | 3.0.6920.5012 | 4,218,880 | 11-Wrzesień-2010 | 01:29 | x86 |
| Presentationfontcache.exe.config | Nie dotyczy | 161 | 10 cze 2009 | 21:14 | Nie dotyczy |
| Wpfgfx_v0300.dll | 3.0.6920.4902 | 1,736,536 | 10 cze 2009 | 21:14 | x86 |
| Presentationframework.dll | 3.0.6920.5012 | 5,279,744 | 11-Wrzesień-2010 | 01:29 | x86 |
| Presentationhostdll.dll | 3.0.6920.5012 | 130,408 | 11-Wrzesień-2010 | 01:29 | x86 |
| Presentationhost.exe | 4.0.31106.0 | 295,264 | 11-Wrzesień-2010 | 01:29 | x86 |
| Presentationhostproxy.dll | 4.0.31106.0 | 99,176 | 11-Wrzesień-2010 | 01:29 | x86 |
| Windowsbase.dll | 3.0.6920.5012 | 1,253,376 | 11-Wrzesień-2010 | 01:29 | x86 |
Dla wszystkich obsługiwanych wersji systemów Windows 7 i Windows Server 2008 R2 dla komputerów z procesorami x64
| Nazwa pliku | Wersja pliku | Rozmiar pliku | Data | Godzina | Platforma |
|---|---|---|---|---|---|
| Presentationcore.dll | 3.0.6920.5012 | 3,997,696 | 11-Wrzesień-2010 | 01:28 | x64 |
| Presentationfontcache.exe.config | Nie dotyczy | 161 | 10 cze 2009 | 20:30 | Nie dotyczy |
| Wpfgfx_v0300.dll | 3.0.6920.4902 | 2,255,176 | 10 cze 2009 | 20:30 | x64 |
| Presentationframework.dll | 3.0.6920.5012 | 4,636,672 | 11-Wrzesień-2010 | 01:28 | x64 |
| Presentationhostdll.dll | 3.0.6920.5012 | 171,368 | 11-Wrzesień-2010 | 01:28 | x64 |
| Presentationhost.exe | 4.0.31106.0 | 320,352 | 11-Wrzesień-2010 | 01:28 | x64 |
| Presentationhostproxy.dll | 4.0.31106.0 | 109,928 | 11-Wrzesień-2010 | 01:28 | x64 |
| Windowsbase.dll | 3.0.6920.5012 | 1,114,112 | 11-Wrzesień-2010 | 01:28 | x64 |
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.
Obejście
Aby obejść ten problem, wyłącz potok renderowania sprzętowego, a następnie włącz potok renderowania programowego.
Aby wyłączyć potok renderowania sprzętowego i włączyć potok renderowania programowego, użyj jednej z następujących metod:
Ustaw wyliczenie System.Windows.Interop.RenderMode.
Poniżej przedstawiono przykładowy kod, który ustawia wyliczenie System.Windows.Interop.RenderMode w celu włączenia potoku renderowania programowego po załadowaniu okna 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; }Ustaw klucz rejestru DisableHWAcceleration .
Ważne W tej sekcji, metodzie lub zadaniu podano informacje dotyczące modyfikowania rejestru. Niepoprawne zmodyfikowanie rejestru może jednak być przyczyną poważnych problemów. Dlatego należy uważnie wykonywać podane czynności. Aby zapewnić dodatkową ochronę, przed zmodyfikowaniem rejestru należy wykonać jego kopię zapasową. Dzięki temu będzie można przywrócić rejestr w przypadku wystąpienia problemu. Aby uzyskać więcej informacji dotyczących wykonywania kopii zapasowej i przywracania rejestru, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
322756 Jak wykonać kopię zapasową rejestru i przywrócić go w systemie WindowsOstrzeżenie: ta metoda wyłącza potok renderowania sprzętowego dla wszystkich aplikacji WPF na komputerze. W związku z tym metoda ta nie jest zwykle zalecana, z wyjątkiem sytuacji, gdy klienci kontrolują środowiska i nie mają nic przeciwko efektowi dla wszystkich aplikacji WPF.
Kliknij przycisk Start, kliknij polecenie Uruchom, wpisz polecenie regedit, a następnie naciśnij klawisz ENTER.
Zlokalizuj, a następnie kliknij następujący podklucz rejestru:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.GraphicsUstaw wartość wpisu rejestru DisableHWAcceleration na 1.
Uwaga Jeśli wpis rejestru DisableHWAcceleration nie istnieje, należy kliknąć prawym przyciskiem podklucz rejestru, wskazać polecenie Nowy, a następnie kliknąć polecenie Wartość ciągu , aby utworzyć nowy wpis rejestru. Wpisz DisableHWAcceleration jako nazwę nowego wpisu rejestru, kliknij dwukrotnie pozycję DisableHWAcceleration, a następnie zmień dane wartości DisableHWAcceleration na 1.
Zamknij Edytor rejestru.
Więcej informacji
Aby uzyskać więcej informacji na temat potoku renderowania oprogramowania, odwiedź następującą witrynę sieci MSDN (Microsoft Developer Network) w sieci Web:
Ogólne informacje o potoku renderowania oprogramowania
Aby uzyskać więcej informacji o ustawieniach rejestru renderowania WPF, odwiedź następującą witrynę MSDN w sieci Web:
Ogólne informacje o ustawieniach rejestru renderowania WPF
Aby uzyskać więcej informacji o wyliczeniu System.Windows.Interop.RenderMode, odwiedź następującą witrynę MSDN w sieci Web:
Ogólne informacje o wyliczeniu "System.Windows.Interop.RenderMode"