2012-11-07 2 views
0

내 C# WinForms 응용 프로그램에는 이전 VB 6.0 또는 VC 6.0 ActiveX 컨트롤을 텍스트 편집기로 사용하는 하위 응용 프로그램이 있습니다 (이전 ActiveX 버전을 사용한 경우 TXTextControl) . VS IDE에서 나는이 ActiveX 컨트롤이이 아이의 응용 프로그램을 닫을 때 다음 나는 주요 응용 프로그램을 닫고이 오류 얻을 :이에 digigng에 대한 제안 약간의 기술과 아이디어가 무엇COM 개체 및 RCW로 문제 디버깅

enter image description here

을 무슨 일이 일어나고 있는지 찾아야하니? VS IDE에서 내 응용 프로그램을 실행하면 이런 일이 발생하지 않습니다.

답변

1

COM 개체를 RCW에서 분리 할 수있는 방법은 여러 가지가 있지만 VS 디버거에서만 왜 발생하는지 잘 모르겠습니다.

  1. ActiveX \ RCW 클래스에 대한 참조를 유지해야합니다. (또한 정적 변수로 참조를 유지하면 이슈를 보았 기 때문에 정적 변수로 유지하는 것이 좋습니다.) 예를 들면 다음과 같습니다. TXTextControl txControl = new TXTextControlClass(); 해당 txContol이 참조를 보유하고 응용 프로그램의 지속 기간 동안 범위 내에 있음
  2. 응용 프로그램 전에 수동 정리 코드를 추가하고 RCW 참조를 보유하는 클래스에 IDisposable을 구현할 수 있습니다. 또는 AX 컨트롤을 호스팅하는 서식이 삭제됩니다.
  3. AX 컨트롤에 이벤트 처리기를 연결 한 경우 RCW 참조 및 응용 프로그램을 닫기 전에 종료되는지 확인하십시오. 수동으로 핸들러를 분리 할 수도 있습니다.