증상
다음과 같은 경우를 생각해 볼 수 있습니다.
-
Microsoft .NET Framework 3.5 SP1(서비스 팩 1) 기반 WPF(Windows Presentation Foundation) 애플리케이션을 실행합니다.
-
WPF 애플리케이션은 하드웨어 렌더링 파이프라인을 사용합니다.
-
애플리케이션은 하나 이상의 사용자 지정 WPF 추가 기능 구성 요소를 포함하는 많은 애플리케이션 도메인을 로드하고 언로드합니다.
이 시나리오에서 애플리케이션에서 System.Runtime.InteropServices.COMException 예외가 발생한 다음 애플리케이션이 충돌합니다.
해결 방법
핫픽스 정보
지원되는 핫픽스는 Microsoft에서 사용할 수 있습니다. 그러나 이 핫픽스는 이 문서에 설명된 문제만 수정하기 위한 것입니다. 이 특정 문제가 발생하는 시스템에만 이 핫픽스를 적용합니다. 이 핫픽스는 추가 테스트를 받을 수 있습니다. 따라서 이 문제의 심각한 영향을 받지 않는 경우 이 핫픽스를 포함하는 다음 소프트웨어 업데이트를 기다리는 것이 좋습니다. MSDN 코드 갤러리에서 이 핫픽스를 다운로드하려면 다음 Microsoft 웹 사이트를 방문하세요.
http://code.msdn.microsoft.com/KB2276690참고 MSDN 코드 갤러리에는 핫픽스를 사용할 수 있는 언어가 표시됩니다. 나열된 언어가 표시되지 않으면 코드 갤러리 리소스 페이지를 해당 언어에 사용할 수 없기 때문입니다. 참고 추가 문제가 발생하거나 문제 해결이 필요한 경우 별도의 서비스 요청을 만들어야 할 수 있습니다. 일반적인 지원 비용은 이 특정 핫픽스에 적합하지 않은 추가 지원 질문 및 문제에 적용됩니다. Microsoft 고객 서비스 및 지원 전화 번호의 전체 목록을 확인하거나 별도의 서비스 요청을 만들려면 다음 Microsoft 웹 사이트를 방문하세요.
http://support.microsoft.com/contactus/?ws=support
전제 조건
이 핫픽스를 적용하려면 .NET Framework 3.5 SP1(서비스 팩 1)이 설치되어 있어야 합니다.
다시 시작 요구 사항
이 핫픽스를 적용한 후에는 컴퓨터를 다시 시작할 필요가 없습니다.
핫픽스 대체 정보
이 핫픽스는 다른 핫픽스를 대체하지 않습니다.
파일 정보
이 핫픽스의 영어 버전에는 다음 표에 나열된 파일 특성(또는 이후 파일 특성)이 있습니다. 해당 파일의 날짜와 시간은 UTC(협정 세계시)로 표시됩니다. 파일 정보를 볼 때 로컬 시간으로 변환됩니다. UTC와 현지 시간의 차이를 알려면 제어판의 날짜 및 시간 항목에서 표준 시간대 탭을 사용하십시오.
지원되는 모든 x86 기반 버전의 Windows Server 2003 및 Windows XP의 경우
|
File name |
파일 버전 |
파일 크기 |
날짜 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
2010년 9월 2일 |
01:32 |
x86 |
|
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
2010년 9월 2일 |
01:28 |
x86 |
|
Presentationhost.exe |
4.0.40305.0 |
295,264 |
2010년 9월 2일 |
01:28 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
2010년 9월 2일 |
01:32 |
x86 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
2010년 9월 2일 |
01:32 |
x86 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
2010년 9월 2일 |
01:32 |
x86 |
지원되는 모든 x64 기반 버전의 Windows Server 2003 및 Windows XP의 경우
|
File name |
파일 버전 |
파일 크기 |
날짜 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
2010년 9월 2일 |
00:53 |
x64 |
|
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
2010년 9월 2일 |
00:48 |
x64 |
|
Presentationhost.exe |
4.0.31106.0 |
320,352 |
2010년 9월 2일 |
00:48 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
2010년 9월 2일 |
00:53 |
x64 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
2010년 9월 2일 |
00:53 |
x64 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
2010년 9월 2일 |
00:53 |
x64 |
지원되는 모든 x86 기반 버전의 Windows Vista SP2(서비스 팩 2) 및 Windows Server 2008 SP2(서비스 팩 2)
|
File name |
파일 버전 |
파일 크기 |
날짜 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
2010년 9월 9일 |
10:52 |
x86 |
|
Presentationfontcache.exe.config |
해당 없음 |
161 |
2009년 4월 3일 |
2,125 |
해당 없음 |
|
Wpfgfx_v0300.dll |
3.0.6920.4003 |
1,736,024 |
2009년 6월 17일 |
03:08 |
x86 |
|
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
2010년 9월 9일 |
10:52 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
2010년 9월 9일 |
10:52 |
x86 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
2010년 9월 9일 |
10:52 |
x86 |
지원되는 모든 x64 기반 버전의 Windows Vista SP2 및 Windows Server 2008 SP2의 경우
|
File name |
파일 버전 |
파일 크기 |
날짜 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
2010년 9월 9일 |
10:52 |
x64 |
|
Presentationfontcache.exe.config |
해당 없음 |
161 |
2009년 4월 3일 |
20:58 |
해당 없음 |
|
Wpfgfx_v0300.dll |
3.0.6920.4003 |
2,254,168 |
2009년 6월 17일 |
03:08 |
x64 |
|
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
2010년 9월 9일 |
10:52 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
2010년 9월 9일 |
10:52 |
x64 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
2010년 9월 9일 |
10:52 |
x64 |
지원되는 모든 x86 기반 버전의 Windows 7
|
File name |
파일 버전 |
파일 크기 |
날짜 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.5012 |
4,218,880 |
2010년 9월 11일 |
01:29 |
x86 |
|
Presentationfontcache.exe.config |
해당 없음 |
161 |
2009년 6월 10일 |
21:14 |
해당 없음 |
|
Wpfgfx_v0300.dll |
3.0.6920.4902 |
1,736,536 |
2009년 6월 10일 |
21:14 |
x86 |
|
Presentationframework.dll |
3.0.6920.5012 |
5,279,744 |
2010년 9월 11일 |
01:29 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.5012 |
130,408 |
2010년 9월 11일 |
01:29 |
x86 |
|
Presentationhost.exe |
4.0.31106.0 |
295,264 |
2010년 9월 11일 |
01:29 |
x86 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
2010년 9월 11일 |
01:29 |
x86 |
|
Windowsbase.dll |
3.0.6920.5012 |
1,253,376 |
2010년 9월 11일 |
01:29 |
x86 |
지원되는 모든 x64 기반 버전의 Windows 7 및 Windows Server 2008 R2용
|
File name |
파일 버전 |
파일 크기 |
날짜 |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.5012 |
3,997,696 |
2010년 9월 11일 |
01:28 |
x64 |
|
Presentationfontcache.exe.config |
해당 없음 |
161 |
2009년 6월 10일 |
20:30 |
해당 없음 |
|
Wpfgfx_v0300.dll |
3.0.6920.4902 |
2,255,176 |
2009년 6월 10일 |
20:30 |
x64 |
|
Presentationframework.dll |
3.0.6920.5012 |
4,636,672 |
2010년 9월 11일 |
01:28 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.5012 |
171,368 |
2010년 9월 11일 |
01:28 |
x64 |
|
Presentationhost.exe |
4.0.31106.0 |
320,352 |
2010년 9월 11일 |
01:28 |
x64 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
2010년 9월 11일 |
01:28 |
x64 |
|
Windowsbase.dll |
3.0.6920.5012 |
1,114,112 |
2010년 9월 11일 |
01:28 |
x64 |
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.
해결 방법
이 문제를 해결하려면 하드웨어 렌더링 파이프라인을 사용하지 않도록 설정한 다음 소프트웨어 렌더링 파이프라인을 사용하도록 설정합니다. 하드웨어 렌더링 파이프라인을 사용하지 않도록 설정하고 소프트웨어 렌더링 파이프라인을 사용하도록 설정하려면 다음 방법 중 하나를 사용합니다.
-
System.Windows.Interop.RenderMode 열거형을 설정합니다.다음은 WPF 창이 로드될 때 소프트웨어 렌더링 파이프라인을 사용하도록 System.Windows.Interop.RenderMode 열거형을 설정하는 몇 가지 예제 코드입니다.
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 레지스트리 키를 설정합니다.중요 이 섹션, 메서드 또는 작업에는 레지스트리를 수정하는 방법을 알려주는 단계가 포함되어 있습니다. 그러나 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 따라서 다음 단계를 주의하여 수행해야 합니다. 추가된 보호를 위해 레지스트리를 수정하기 전에 백업하세요. 이렇게 하면 문제가 발생하더라도 레지스트리를 복원할 수 있습니다. Windows XP 및 Windows Server 2003에서 레지스트리를 백업, 편집 및 복원하는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료를 참조하세요.
322756 Windows경고에서 레지스트리를 백업 및 복원하는 방법 이 방법은 컴퓨터의 모든 WPF 애플리케이션에 대해 하드웨어 렌더링 파이프라인을 사용하지 않도록 설정합니다. 따라서 일반적으로 고객이 환경을 제어하고 모든 WPF 애플리케이션에 대한 효과를 신경 쓰지 않는 경우를 제외하고는 메서드를 권장하지 않습니다.
-
시작을 클릭하고 실행을 클릭하고 regedit를 입력한 다음 Enter 키를 누릅니다.
-
다음 레지스트리 하위 키를 찾아서 클릭합니다.
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics
-
DisableHWAcceleration 레지스트리 항목의 값을 1로 설정합니다.참고 DisableHWAcceleration 레지스트리 항목이 없는 경우 레지스트리 하위 키를 마우스 오른쪽 단추로 클릭하고 새로 만들기를 가리킨 다음 문자열 값을 클릭하여 새 레지스트리 항목을 만듭니다. 새 레지스트리 항목의 이름에 대해 DisableHWAcceleration 을 입력하고 DisableHWAcceleration을 두 번 클릭한 다음 DisableHWAcceleration 값 데이터를 1로 변경합니다.
-
레지스트리 편집기를 종료합니다.
-
추가 정보
소프트웨어 렌더링 파이프라인에 대한 자세한 내용은 다음 MSDN(Microsoft Developer Network) 웹 사이트를 방문하세요. 소프트웨어 렌더링 파이프라인에 대한 일반 정보 WPF 렌더링의 레지스트리 설정에 대한 자세한 내용은 다음 MSDN 웹 사이트:WPF 렌더링의 레지스트리 설정에 대한 일반 정보를 참조하세요.System.Windows.Interop.RenderMode 열거형에 대한 자세한 내용은 다음 MSDN 웹 사이트:"System.Windows.Interop.RenderMode" 열거형에 대한 일반 정보를 참조하세요.