2012-01-30 3 views
6

WPF 응용 프로그램이 특정 클라이언트 컴퓨터에서 충돌하지만 다른 모든 곳에서 작동하는 몇 가지 불쾌한 문제가있었습니다. 모든 개발자의 악몽입니다.WPF 창이 시작될 때 충돌하거나 시작되지만 멈추거나 내용이 렌더링되지 않음

나는 동료 개발자들의 온전함을 유지하기 위해 여기에 문제/해결책을 게시하고 있습니다. 문제를 해결하기가 쉽지 않았습니다.

두 가지 문제는 모두 고전적인 "내 컴퓨터에서 작동하지만 문제는 아닙니다"문제입니다.

  1. 시작시 WPF 응용 프로그램이 충돌합니다. 오류가없고 이유가 없습니다.
  2. WPF 응용 프로그램이 시작되면 창 테두리가 표시되지만 내용은 페인트되지 않습니다. 그냥 멈추고 ("투명한 창"으로보고) 컴퓨터를 닫으려면 클릭하면 크래시 보고서가 나타납니다.

답변

17

1) 시작시 WPF 응용 프로그램이 다운됩니다. 오류가없고 이유가 없습니다.

실제로 오류를 찾기위한 주요 문제 해결 단계는 app.xaml에 오류 처리를 추가하는 것입니다. ,

<Application DispatcherUnhandledException="App_DispatcherUnhandledException" /> 

하고 App.xaml.cs를에를 같은 추가 : 당신의 App.xaml 헤더에서

추가,이 추가 디버깅을 추가 한 후

void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs args) 
    { 
     log.Fatal("An unexpected application exception occurred", args.Exception); 

     MessageBox.Show("An unexpected exception has occurred. Shutting down the application. Please check the log file for more details."); 

     // Prevent default unhandled exception processing 
     args.Handled = true; 

     Environment.Exit(0); 
    } 

를, 나는 오류를 잡았 :

System.TypeInitializationException : 'System.Windows.Media.FontFamily'의 형식 이니셜 라이저에서 예외가 발생했습니다. ---> System.ArgumentException : 경로에 잘못된 문자가 있습니다.

또한 연구, 클라이언트 컴퓨터가 마이크로 소프트 \ 윈도우 NT \ \

HKEY_LOCAL_MACHINE \ 소프트웨어에서 레지스트리의 글꼴 항목 뒤에 '◻'문자를했다 솔루션을 주도, 커피, 인터넷 검색 CurrentVersion \ Fonts

이 가짜 문자를 제거하면 문제가 해결됩니다.

No idea how this got into the registry

은 경력 절약 블로그 게시물 "How to Crash every WPF application"를 참조하십시오.

2) WPF 응용 프로그램이 시작되고 창 테두리가 표시되지만 내용이 채워지지 않습니다. 단지 멈춰 있습니다 ("투명한 창"으로보고 됨)

이것은 다른 글꼴 관련 문제였습니다. WPF가 크기 16 (?)으로 글꼴을 렌더링하는 것을 거부 한 것처럼 처음에는 클라이언트 사이트에서 하나의 컴퓨터에서 작동하지 않는 Window.xaml에서 fontSize = "16"으로 압축했습니다. 글꼴 크기를 지정하는 코드를 제거하고 작동했습니다 ... 그러나 밝혀 졌을 때, 그것은 내 로그인 프로파일에서만 작동했습니다. 동료 기계의 로그인 프로파일 이 동일한 기계 기기에 계속 실패합니다. 글자 그대로 나 자신으로 로그인하고, 성공적으로 실행하고, 로그 아웃하고, 스스로 로그인하여 실행하고, "투명 매달려있는 창"으로 실패합니다. 같은 기계, 동일한 권한.

마지막 수단으로 나는 그 사람으로 로그인했으며 사용자 정의 테마이 확대 된 글꼴로 설정되어 있음을 알았습니다. 나는 윈도우 테마를 고전 테마로 바꿨다. 그리고 이것으로 문제가 해결되었다 (?!?). 이 문제는 글꼴과 관련이있는 것 같지만 절대적인 원인은 밝혀지지 않았습니다. 테마를 다시 표준 테마로 변경하는 것은 일시적인 해결 방법입니다.

관련 문제