2009-12-30 5 views
0

xml 파일을 읽는 동안 :Contextswitchdeadlock 오류 나는 이상한 오류가

디버깅 도우미 'ContextSwitchDeadlock은'C '에서이 문제를 감지 관리 : \ 문서 및 설정 \ 레나 G \ SchoolStuff \ IR 정보 \ 내 문서 \ Home Work \ FianlProject \ finalProject \ finalProject \ bin \ Debug \ finalProject.vshost.exe '를 입력하십시오. 추가 정보 : CLR은 COM 컨텍스트 0x3407968에서 COM 컨텍스트 0x3407ad8로 60 초 동안 전환 할 수 없습니다. 대상 컨텍스트/아파트를 소유하는 스레드는 Windows 메시지를 펌핑하지 않고 비 펌핑 대기 또는 매우 오랫동안 실행중인 작업을 처리하는 중 가장 가능성이 큽니다. 이러한 상황은 일반적으로 성능에 부정적인 영향을 미치며 심지어 애플리케이션이 비 반응적이거나 시간이 지남에 따라 지속적으로 메모리 사용량이 누적 될 수도 있습니다. 이 문제를 방지하려면 모든 단일 스레드 아파트 (STA) 스레드는 펌핑 대기 기본 요소 (예 : CoWaitForMultipleHandles)를 사용하고 장기 실행 작업 중에 정기적으로 메시지를 펌프해야합니다.

이 오류는 계속 실행하거나 중단 할 수 있습니다. 계속하면 계속 실행해도 괜찮습니다.하지만 여전히 걱정 스럽습니다. 일부 텍스트가있는 xml 파일을 읽고, 해시 테이블에 단어를 넣은 다음 해시에서 regulat 텍스트 파일로 쓰는 프로그램이 있습니다.

누군가가이 문제를 해결하는 데 도움을 줄 수 있는지 확인하십시오. 사전에

감사합니다,

레나

+0

별도의 스레드에서로드를 실행하고 있습니까? 어떻게 XML 파일을 읽는거야? COM 또는 네이티브 C#를 통해? –

답변

1

휴! 관리 디버깅 도우미는 훌륭하지만 자세한 예외 메시지를 제공합니다. 이 경우 Visual Studio에서는 COM 호출을 수행하는 응용 프로그램의 스레드가 "훌륭하게"재생되지 않고 Windows 메시지에 올바르게 응답하지 않는다고 경고합니다.

실행을 계속할 수 있으며 모두 정상적으로 작동해야하지만 처음부터 문제의 원인을 조사하는 것이 좋습니다.

코드가 정확히 무엇을합니까? XML 파일을 어떻게 읽습니까? 파일의 크기는 얼마나됩니까?

그냥 XMLDocument를 구문 분석하는 루프에 앉아 있으면이 오류가 표시됩니다. 하드 디스크에 불량 섹터가 있는지 확인하기 위해 Windows 이벤트 로그를 확인하는 것이 좋습니다.

반면에 백그라운드 스레드를 사용하는 경우 자원 기아에 문제가 있거나 빈번하게 수익을 내지 못하는 어딘가에 막혀있는 전화가 있다는 것입니다.