vs2010 64 -winforms 응용 프로그램의 비트 윈도우 응용 프로그램 누락 정전 : 문제 분석 및 해결책
Visual Studio 2010을 사용하여 64 비트 Wind 로드 이벤트 처리 프로그램의 코드에서 코드가 처리되지 않으면 프로그램은 문제 코드 라인을 건너 뛰고 오류없이 계속 실행됩니다. 이는 예상 디버거 중단의 동작 및 비되지 않은 정보의 비정상적인 표시와 다릅니다.
근본 원인 분석
이 비정상적인 동작은 WOW64 (Windows-on-Windows 64 비트) 시뮬레이션 레이어에서 비롯된 64 비트 시스템에서 실행되는 32 비트 코드와 상호 작용했습니다. 64 비트 윈도우 관리자가 알림을 트리거하면 32 비트 환경에서 응답 코드 (예 :로드 이벤트 처리 프로그램)가 실행됩니다. 이 32 비트 코드에서 이상이 발생하면 WOW64 층은 이상을 삼키고 디버거가 감지되는 것을 방지 할 수 있습니다.
솔루션 및 변경 방법
플랫폼 대상을 AnyCPU로 설정하고 선택한 "Prefering 32 -Bit"을 취소하십시오.
프로젝트에 대한 탐색 & gt;
플랫폼 대상을 AnyCPU로 설정하십시오.
취소 "첫 번째 선택 32 비트".
이것은 강제 적용을 64 비트 프로세스로 작동시켜 WOW64 비정상 억제 문제를 제거합니다.
의 필수 디버거는 이상으로 중단됩니다.
디버그로 돌아갑니다.
> CLR을 선택하십시오. 비정상적인 "원인"확인란을 선택하십시오.
이것은로드 이벤트 처리 프로그램의 위치에 관계없이 CLR 비정상 라인에서 필수 디버거의 실행을 중단합니다. -
부하 이벤트 처리 프로세스에 이상 치료를 추가하십시오 :
Try-Catch 블록을 사용하여로드 이벤트 처리에서 문제 코드를 포위하십시오. -
캐치 블록에 오류 메시지를 표시하고 갑자기 응용 프로그램을 종료하려면 실패를 사용하십시오.
-
-
디버깅 중 비활성화 와우 64 비활성
-
main () 메소드에 추가 :
-
이것은 디버깅 중 메시지주기에서 비정상적인 캡처 비활성화가 비활성화됩니다.
-
로드 이벤트 처리 절차의 사용을 피하십시오 :
-
re- 코드가 실제로로드 이벤트 처리 프로그램에 배치 해야하는지 여부를 재평가하십시오.
일반적으로 사용자 기본 설정 또는 창 크기에 의존하지 않는 초기화 작업은 생성자에서 처리해야합니다. -
추가 설명 : -
Windows 8 이상의 버전에서는이 문제가 해결되었습니다. 따라서 최신 운영 체제로 업데이트하면 솔루션을 제공 할 수도 있습니다.
위 내용은 VS2010을 사용하여 64 비트 Windows Winforms 응용 프로그램에서 예외 메시지가 누락 된 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!