VB6 프로젝트를 VB6 exe로 컴파일했습니다.VB6/.NET 양식 Interop
시작 개체로 간단한 폼을 가지고 있습니다.
그것은 regasm'd .NET dll을 통해 .NET 모달 형식을 시작하고 콜백 COM 인터페이스 (IHandler)의 구현을 전달합니다.
.NET에서는 VB6의 IHandler 구현을 다시 호출합니다.
VB6은 vbModal을 사용하여 새 양식을 표시하려고합니다. VB6 양식은 여전히 보이는 모달 .NET 양식 때문에 상호 작용이 차단됩니다.
여기 또는 제안 된 접근 방법에는 어떤 방법이 있습니까?
새 (STA) (관리되는) 스레드에서 VB6을 다시 호출하려고 시도했지만 MyCallbackForm.Show vbModal을 시도하면 "잘못된 프로 시저 호출 또는 인수가 발생합니다."... 다음과 같이 가정합니다. 새로운 스레드에서 다시 호출한다는 사실과 함께 ...
업데이트 : VB6 프로젝트 유형을 ActiveX로 설정하면 새 스레드에서 콜백을 성공적으로 수행하고 내 VB6 양식을 모달로 표시 할 수있었습니다. exe ...하지만 일단 그렇게했다면 콜백에서 스레드를 잃는 것처럼 보였습니다. VB6에서 .NET으로 이어지는 호출은 교차 스레딩 예외가 발생했습니다. 나는 ActiveX EXE를 사용할 때 스레딩 모델과 관련이 있다고 생각합니다.
문제는. NET 양식을 표시하지 않습니다. 일단 모달로 표시하면 VB6 콜백이 사용자 상호 작용을 캡처 할 수 없습니다. – Jeff