PRB: 프로세스 간 COM 자동화를 Win95는/98에서 클라이언트 응용 프로그램에서 응답하지 수 있습니다.

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

현상

클라이언트 응용 프로그램에서 out-of-process COM 서버를 자동화할 때, 클라이언트 코드를 밀접한 루프를 시작할 새 인터페이스를 얻기 위한 광범위한 요청하는 경우, 클라이언트 응용 프로그램에 필요한 프로세스가 비정상적으로 종료될 수 있는 자동화 호출 동안 응답하지 않을 수도 있습니다. 멈춘 후에는 마샬링된 인터페이스와 관련된 모든 COM 요청이 실패합니다. 문제가 선택을 다시 부팅해야 합니다.

이 문제는 Windows 95 및 Windows 98 시스템에 대해서만 발생합니다.

원인

인터페이스를 프로세스 경계를 넘어 마샬링될 때 클라이언트 및 서버 프로세스 간에 통신을 처리하기 위해 여러 시스템 개체 만듭니다. 프록시/스텁, OID 및 COM에 의해 마샬링할 중인 인터페이스를 식별하는 데 필요한 OXID 함께 포함됩니다. 인터페이스를 클라이언트 프로세스에 의해 해제될 때 가비지 수집 중에 이러한 개체는 소멸됩니다.

의도적으로 COM 지연 가비지 수집을 사용하여 더 이상 필요하지 않은 시스템 리소스를 늘리십시오. 이 컬렉션은 상대 비활성 기간 동안 발생합니다. 클라이언트 응용 프로그램에서 가비지 수집이 발생할 적절한 여유 시간을 제공하지 않는 경우 시스템 리소스가 부족해질 및 더 이상 인터페이스를 마샬링할 수 없습니다. 이 경우 COM 계층, 시스템을 다시 시작할 때까지 더 이상 가비지 수집을 방지하는 손상될 수 있습니다.

문제의 가장 일반적인 원인은 클라이언트의 코드 밀접한 루프 입력한 또는 후속 호출을 짧은 시간 동안 많은 out-of-process 개체를 해제할 수 있는 수행되고 중첩된 개체 계층 관련된 자동화 강렬한 기간의 수행하는 것입니다. 예를 들어, 다음 코드 예제에서는 세 가지 인터페이스를 PrintOut 메서드를 호출할 때마다 마샬링되어야 합니다 중첩된 개체 계층 구조를 보여 줍니다. 엄격한 루프에서 코드가 실행되기 때문에 인터페이스 마샬링할 중인 총 30입니다:
   For i = 1 To 10
      oExcel.ActiveWorkbook.Sheets(i).UsedRange.PrintOut
   Next i
				
Windows 95 및 Windows 98, 약 65,536 한 번에 마샬링할 수 있는 인터페이스 총 횟수입니다.

해결 방법

개발자는 개체 참조 밀접한 루프 동안 요청 수를 또는 자동화 많은 기간 최소화 합니다. 인터페이스를 두 번 이상 필요한 경우 이를 합니다 수 데 보유한 및 반복적으로 정식 및 reacquired 여러 번 연속해서 에서 대신 사용됩니다.

예를 들어, 위의 샘플이 수정된 버전의 동일한 작업을 수행하지만 경우에만 두 개의 인터페이스를 마샬링할 수 있어야 합니다 (위의 코드에서 30% 감소) 각 PrintOut 호출에 대한:
   Set oBook = oExcel.ActiveWorkbook
   For i = 1 To 10
      oBook.Sheets(i).UsedRange.PrintOut
   Next i
				
서버를 in-process 스크립팅을 허용하는 경우 다른 가능한 해결 일부 있는 자동화 코드 in-process 서버로 이동할 수 있습니다. 예를 들어, Microsoft Office 제품 내부 자동화 VBA 스크립팅 통합합니다. VBA 모듈에 루프 코드를 이동하여 여러 인터페이스를 마샬링 않도록 하고 대신 서버에서 모든 작업을 수행할 수 있게 하여 매크로를 호출할 수 있습니다.

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
219905HOWTO: 동적으로 추가 및 Visual Basic VBA 매크로 실행

속성

기술 자료: 216400 - 마지막 검토: 2007년 1월 24일 수요일 - 수정: 4.4
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows 95
  • Microsoft Windows 98 Standard Edition
  • Microsoft Windows Millennium Edition
키워드:?
kbmt kbautomation kboleapp kbprb KB216400 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