FIX: ATL EXE 서버 CComAutoThreadModule에 대해 기반에 대한 등록 응답하지 않을 수 있다

기술 자료 번역 기술 자료 번역
기술 자료: 202128 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

현상

ATL EXE 서버 기반 CComAutoThreadModule < >에 등록되어 있거나 등록이 때 응답하지 않을 수 있습니다.

원인

CComAutoThreadModule<>::Init()의 WinMain() 라는 4 기본 스레드에서 스레드 풀을 만듭니다. 전역 CComAutoThreadModule 소멸자를 특정 프로세스를 종료하기 전에 이러한 스레드를 종료할 수 있습니다. 이 스레드 풀에서 각 스레드가 WM_QUIT 메시지를 게시하고 스레드 핸들을 WaitForSingleObject() 호출하면 발생합니다. 스레드 풀의 스레드 GetMessage() 호출을 않은 수 있도록 및 메시지 큐가 만들어지지 않도록 일정을 세웁니다. 이로 인해 실패할 수 PostThreadMessage(). 따라서 풀의 스레드 않은 작업을 종료하고 WaitForSingleObject() 스레드를 종료하도록 무한히 대기합니다.

해결 방법

Altcom.h 파일을 CComAutoThreadModule 함수 소멸자 vc98\atl\include 디렉터리 안에 다음 코드를 바꿉니다.
   ::PostThreadMessage(m_pApartments[i].m_dwThreadID, WM_QUIT, 0, 0);
				

이 코드:
   while (::PostThreadMessage(m_pApartments[i].m_dwThreadID, WM_QUIT,
      0, 0) == 0) ::Sleep(100);
				

현재 상태

Microsoft는 이 문서의 시작 부분에 나열한 제품에서 버그가 수 있도록 이 확인했습니다.

이 문제는 Microsoft Visual C++ .NET에서 수정되었습니다.

추가 정보

  1. Appwizard를ATL EXE 만들 수 있습니다.
  2. 프로젝트에 있는 모든 종류의 ATL 개체 삽입하십시오.
  3. 함께 CComAutoThreadModule<ccomsimplethreadallocator>CComModule Stdafx.h에서 바꾸기.
  4. 프로젝트를 빌드하십시오.

    참고: 사용자 지정 빌드 단계는 서버를 등록합니다 때문에 시점에서 서버가 응답하지 않을 수도 있습니다 가능성이 없습니다.
  5. 프로젝트 설정 메뉴 에서 디버그 탭 형식 "/RegServer" 프로그램 인수 대화 상자에서.
  6. 서버 디버거에서 실행할.

    참고: 처음 중단될 경우 이 단계를 반복합니다. 관련된 타이밍 때문에 특정 시스템에서 문제를 재현할 수 없습니다.

속성

기술 자료: 202128 - 마지막 검토: 2003년 12월 11일 목요일 - 수정: 2.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ActiveX Template Library 3.0?을(를) 다음과 함께 사용했을 때
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
키워드:?
kbmt kbbug kbfix kblocalsvr kbthread KB202128 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com