Применяется к
.NET Framework 3.5 Service Pack 1

Проблемы

Рассмотрим следующий сценарий.

  • Вы запускаете приложение Windows Presentation Foundation (WPF) на основе Microsoft .NET Framework 3.5 с пакетом обновления 1 (SP1).

  • Приложение WPF использует конвейер аппаратной отрисовки.

  • Приложение загружает и выгружает множество доменов приложений, содержащих один или несколько пользовательских компонентов надстройки WPF.

В этом сценарии приложение сталкивается с исключением System.Runtime.InteropServices.COMException, а затем происходит сбой приложения.

Решение

Сведения об исправлении

Поддерживаемое исправление доступно в корпорации Майкрософт. Однако это исправление предназначено для устранения только проблемы, описанной в этой статье. Примените это исправление только к системам, в которых возникла эта проблема. Это исправление может пройти дополнительное тестирование. Поэтому, если эта проблема не затрагивает вас, рекомендуется дождаться следующего обновления программного обеспечения, содержащего это исправление. Чтобы скачать это исправление из коллекции кода MSDN, посетите следующий веб-сайт Майкрософт:

http://code.msdn.microsoft.com/KB2276690Примечание. В коллекции кода MSDN отображаются языки, для которых доступно исправление. Если вы не видите свой язык в списке, это связано с тем, что страница ресурсов коллекции кода недоступна для этого языка. Примечание. Если возникают дополнительные проблемы или требуется устранить неполадки, может потребоваться создать отдельный запрос на обслуживание. Обычные затраты на поддержку будут применяться к дополнительным вопросам и проблемам, которые не относятся к данному исправлению. Полный список телефонных номеров службы поддержки и поддержки Майкрософт или создание отдельного запроса на обслуживание см. на следующем веб-сайте Майкрософт:

http://support.microsoft.com/contactus/?ws=support

Предварительные условия

Чтобы применить это исправление, необходимо установить .NET Framework 3.5 с пакетом обновления 1 (SP1). 

Требование перезагрузки

После применения этого исправления не нужно перезагружать компьютер.

Сведения о замене исправлений

Это исправление не заменяет никаких других исправлений.

Сведения о файле

Английская версия исправления содержит файлы с атрибутами, указанными в следующей таблице, или более поздние. Даты и время для файлов указаны в формате времени UTC. При просмотре сведений о файлах выполняется перевод соответствующих значений в местное время. Чтобы узнать разницу между временем UTC и местным временем, откройте вкладку Часовой пояс элемента Дата и время панели управления.

Для всех поддерживаемых x86-разрядных версий Windows Server 2003 и Windows XP

Имя файла

Версия файла

Размер

дата

Время

Платформа

Presentationcore.dll

3.0.6920.4033

4,218,880

02 сентября 2010 г.

01:32

x86

Presentationframework.dll

3.0.6920.4033

5,279,744

02 сентября 2010 г.

01:28

x86

Presentationhost.exe

4.0.40305.0

295,264

02 сентября 2010 г.

01:28

x86

Presentationhostdll.dll

3.0.6920.4033

130,408

02 сентября 2010 г.

01:32

x86

Presentationhostproxy.dll

4.0.31106.0

99,176

02 сентября 2010 г.

01:32

x86

Windowsbase.dll

3.0.6920.4033

1,249,280

02 сентября 2010 г.

01:32

x86

Для всех поддерживаемых 64-разрядных версий Windows Server 2003 и Windows XP

Имя файла

Версия файла

Размер

дата

Время

Платформа

Presentationcore.dll

3.0.6920.4033

3,997,696

02 сентября 2010 г.

00:53

x64

Presentationframework.dll

3.0.6920.4033

4,636,672

02 сентября 2010 г.

00:48

x64

Presentationhost.exe

4.0.31106.0

320,352

02 сентября 2010 г.

00:48

x64

Presentationhostdll.dll

3.0.6920.4033

171,368

02 сентября 2010 г.

00:53

x64

Presentationhostproxy.dll

4.0.31106.0

109,928

02 сентября 2010 г.

00:53

x64

Windowsbase.dll

3.0.6920.4033

1,110,016

02 сентября 2010 г.

00:53

x64

Для всех поддерживаемых x86-разрядных версий Windows Vista с пакетом обновления 2 (SP2) и Windows Server 2008 с пакетом обновления 2 (SP2)

Имя файла

Версия файла

Размер

дата

Время

Платформа

Presentationcore.dll

3.0.6920.4033

4,218,880

09 сентября 2010 г.

10:52

x86

Presentationfontcache.exe.config

Not Applicable

161

03 апреля 2009 г.

21:25

Not Applicable

Wpfgfx_v0300.dll

3.0.6920.4003

1,736,024

17 июня 2009 г.

08:03

x86

Presentationframework.dll

3.0.6920.4033

5,279,744

09 сентября 2010 г.

10:52

x86

Presentationhostdll.dll

3.0.6920.4033

130,408

09 сентября 2010 г.

10:52

x86

Windowsbase.dll

3.0.6920.4033

1,249,280

09 сентября 2010 г.

10:52

x86

Для всех поддерживаемых 64-разрядных версий Windows Vista с пакетом обновления 2 (SP2) и Windows Server 2008 с пакетом обновления 2 (SP2)

Имя файла

Версия файла

Размер

дата

Время

Платформа

Presentationcore.dll

3.0.6920.4033

3,997,696

09 сентября 2010 г.

10:52

x64

Presentationfontcache.exe.config

Not Applicable

161

03 апреля 2009 г.

20:58

Not Applicable

Wpfgfx_v0300.dll

3.0.6920.4003

2,254,168

17 июня 2009 г.

08:03

x64

Presentationframework.dll

3.0.6920.4033

4,636,672

09 сентября 2010 г.

10:52

x64

Presentationhostdll.dll

3.0.6920.4033

171,368

09 сентября 2010 г.

10:52

x64

Windowsbase.dll

3.0.6920.4033

1,110,016

09 сентября 2010 г.

10:52

x64

Для всех поддерживаемых x86-разрядных версий Windows 7

Имя файла

Версия файла

Размер

дата

Время

Платформа

Presentationcore.dll

3.0.6920.5012

4,218,880

11 сентября 2010 г.

01:29

x86

Presentationfontcache.exe.config

Not Applicable

161

10 июня 2009 г.

21:14

Not Applicable

Wpfgfx_v0300.dll

3.0.6920.4902

1,736,536

10 июня 2009 г.

21:14

x86

Presentationframework.dll

3.0.6920.5012

5,279,744

11 сентября 2010 г.

01:29

x86

Presentationhostdll.dll

3.0.6920.5012

130,408

11 сентября 2010 г.

01:29

x86

Presentationhost.exe

4.0.31106.0

295,264

11 сентября 2010 г.

01:29

x86

Presentationhostproxy.dll

4.0.31106.0

99,176

11 сентября 2010 г.

01:29

x86

Windowsbase.dll

3.0.6920.5012

1,253,376

11 сентября 2010 г.

01:29

x86

Все поддерживаемые 64-разрядные (x64) версии Windows 7 и Windows Server 2008 R2

Имя файла

Версия файла

Размер

дата

Время

Платформа

Presentationcore.dll

3.0.6920.5012

3,997,696

11 сентября 2010 г.

01:28

x64

Presentationfontcache.exe.config

Not Applicable

161

10 июня 2009 г.

20:30

Not Applicable

Wpfgfx_v0300.dll

3.0.6920.4902

2,255,176

10 июня 2009 г.

20:30

x64

Presentationframework.dll

3.0.6920.5012

4,636,672

11 сентября 2010 г.

01:28

x64

Presentationhostdll.dll

3.0.6920.5012

171,368

11 сентября 2010 г.

01:28

x64

Presentationhost.exe

4.0.31106.0

320,352

11 сентября 2010 г.

01:28

x64

Presentationhostproxy.dll

4.0.31106.0

109,928

11 сентября 2010 г.

01:28

x64

Windowsbase.dll

3.0.6920.5012

1,114,112

11 сентября 2010 г.

01:28

x64

Статус

Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

Обходное решение

Чтобы обойти эту проблему, отключите конвейер аппаратной отрисовки, а затем включите конвейер программной отрисовки. Чтобы отключить конвейер аппаратной отрисовки и включить конвейер программной отрисовки, используйте один из следующих методов:

  • Задайте перечисление 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 .Важно! В этом разделе, методе или задаче содержатся инструкции по изменению реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует точно выполнять приведенные инструкции. В качестве дополнительной защитной меры перед изменением реестра необходимо создать его резервную копию. Это позволит восстановить реестр в случае возникновения проблем. Дополнительные сведения о создании резервной копии и восстановлении реестра см. в следующей статье базы знаний Майкрософт:

    322756 Резервное копирование и восстановление реестра в Предупреждении Windows. Этот метод отключает конвейер отрисовки оборудования для всех приложений WPF на компьютере. Поэтому метод обычно не рекомендуется, за исключением случаев, когда клиенты управляют средами и не возражают против эффекта для всех приложений WPF.

    1. Нажмите кнопку Пуск, нажмите кнопку Выполнить, введите regedit и нажмите клавишу ВВОД.

    2. Найдите и откройте следующий подраздел реестра:

      HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics

    3. Задайте для записи реестра DisableHWAcceleration значение 1.Примечание. Если запись реестра DisableHWAcceleration не существует, щелкните правой кнопкой мыши подраздел реестра, наведите указатель мыши на пункт Создать и выберите пункт Строковое значение , чтобы создать запись реестра. Введите DisableHWAcceleration в поле имени новой записи реестра, дважды щелкните DisableHWAcceleration и измените значение значения DisableHWAcceleration на 1.

    4. Закройте редактор реестра.

Дополнительная информация

Дополнительные сведения о конвейере отрисовки программного обеспечения см. на следующем веб-сайте Microsoft Developer Network (MSDN):Общие сведения о конвейереотрисовки программного обеспечения. Дополнительные сведения о параметрах реестра для отрисовки WPF см. на следующем веб-сайте MSDN:Общие сведения о параметрах реестра для отрисовки WPF.Дополнительные сведения о перечислении System.Windows.Interop.RenderMode см. на следующем веб-сайте MSDN:Общие сведения о перечислении System.Windows.Interop.RenderMode

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.