MFC 프로그램 사용 중 간헐적으로 아래와 같은 "서버 작업 중" 대화 상자가 출력될 때가 있다.
<요 약>
MFC로 작성된 ActiveX클라이언트 애플리케이션이 ActiveX서버를 사용하려 할 때 다음과 같은 대화 상자가
나타나는 경우가 있습니다.
서버 작업 중 – 다른 프로그램이 사용 중이므로 이 작업을 완료할 수 없습니다. [전환]을 선택하여 사용 중인
프로그램을 활성화하여 문제를 해결하십시오.
Component Request Pending – This Action cannot be completed because the other application is busy.
Choose 'switch to' to activate the busy application and correct the problem
이 대화상자는 ActiveX서버가 클라이언트 애플리케이션에게 응답을 하지 못할 때 나타나게 됩니다.
<현상>
MFC로 작성된 ActiveX 클라이언트 애플리케이션이 ActiveX 서버를 사용하려 할 때 다음과 같은 대화상자
가 나타나는 경우가 있습니다.
"서버 작업 중 - 다른 프로그램이 사용 중이므로 이 작업을 완료할 수 없습니다. [전환]을 선택하여 사용 중인
프로그램을 활성화하여 문제를 해결하십시오"
"Component Request Pending - This Action cannot be completed because the other application is busy.
Choose 'switch to' to activate the busy application and correct the problem"
이때 '전환'을 선택하고 기다리면 정상적으로 동작합니다.
<원인>
사용하고자 하는 ActiveX 컨트롤이 어떤 이유로 인해 응답하지 못하고 있는 상태입니다. 다음과 같은 이유에서
발생할 수 있습니다.
1.ActiveX 컨트롤이 초기화되기 전에 클라이언트 애플리케이션이 이를 사용하려고 시도할 때
2.시스템이 느리거나 동시에 많은 애플리케이션이 동작 중이어서 ActiveX 컨트롤이 응답하지 못하는 경우
3.ActiveX 컨트롤의 설계에 문제가 있어서 응답이 늦도록 제작되어 있을 때
<해결 방법>
첫번째 방법은 다음과 같이 CWinApp::InitInstance()의 파생 함수에서 ColeMessageFilter::SetMessagePendingDelay() 함수를
이용하여 ActiveX 컨트롤의 응답을 기다리는 시간을 길게 설정하면 됩니다.
BOOL CMyApp::InitInstance() {
// ...
AfxOleInit();
COleMessageFilter * pFilter = AfxOleGetMessageFilter();
pFilter->SetMessagePendingDelay(5000);
// ...
}
여기서 SetMessagePendingDelay()의 인자는 클라이언트 애플리케이션이 ActiveX 서버의 응답을 기다리는 시간으로 밀리세컨드 단위입니다.
두번째 방법은 응답을 기다리는 시간을 설정하는 것이 아니라 메시지 박스를 출력하지 않게 하는 설정 입니다.
BOOL CMyApp::InitInstance() {
// ...
AfxOleInit();
COleMessageFilter * pFilter = AfxOleGetMessageFilter();
pFilter->EnableBusyDialog(FALSE);
pFilter->EnableNotRespondingDialog(FALSE);
// ...
}
END
MS 참고 사이트 입니다. (http://support.microsoft.com/default.aspx?scid=kb%3Bko%3B602164)
'IT 나라 > 프로그램 이야기' 카테고리의 다른 글
그루보드5 설치 방법, 그루보드5 시작 (0) | 2016.05.16 |
---|---|
그누보드5 관리자 비밀번호 변경 방법 (0) | 2016.05.04 |
Sliding window (0) | 2013.07.02 |
Window Event Sequence (0) | 2013.06.12 |
COM Converting BSTR to CString and CString to BSTR, another CComBSTR, LPCTSTR, _bstr_t (0) | 2013.05.30 |