2008-09-23 4 views
0

VB6 응용 프로그램은 Interop Forms Toolkit을 사용하여 .NET으로 작성된 양식 작업을 수행합니다. 툴킷에 대한 문서는 VB6 애플리케이션이 종료 될 때 툴킷에 툴킷에 대한 메소드 호출을 권고한다.모덜리스 VB6 응용 프로그램이 응용 프로그램을 종료 할 때 정리를 수행하는 방법은 무엇입니까?

VB6 응용 프로그램은 스플래시 화면을로드하고 여러 모덜리스 폼을 표시하는 Sub Main 프로 시저를 사용합니다. Sub Main이 완료되면 응용 프로그램이 아직 실행 중입니다. 응용 프로그램이 종료되는 것을 어떻게 감지하고 Toolkit에서 정리 메소드를 호출 할 수 있습니까?

+0

* 종료 중 - 교정 해 주시기 바랍니다. – GEOCHET

답변

2

모듈 (아마도 Sub Main을 포함하는 모듈)에서 정리 코드를 저장할 공개 하위 (예 : AppCleanUp)를 만듭니다.

프로젝트에 클래스를 추가하십시오 (예 : clsAppCleanup). 이 클래스에서는 이전 단계에서 만든 하위 클래스를 호출하는 Class_Terminate 이벤트 처리기에 코드를 추가합니다.

모듈 (아마도 Sub Main을 포함하는 동일한 모듈)에서 clsAppCleanup의 변수를 정의하십시오.

Sub Main에 clsAppCleanup을 인스턴스화합니다.

앱이 종료 될 때 클래스의 종료 이벤트로 인해 정리 코드가 실행됩니다.

0

VB6에서 쓴 이후로 꽤 오랜 시간이 걸렸지 만 올바르게 기억한다면 Unload 이벤트를 사용하여 정리 코드 (.NET의 닫기 이벤트와 유사)를 호출 할 수 있습니다. 여전히 실행중인 VB6 앱에 다른 양식이 없는지 확인할 수도 있습니다.

+0

언로드 이벤트가 양식에서 발생합니다. 앱에 여러 가지 양식이 표시됩니다. 앱에 400 개가 넘는 양식이 있기 때문에 앱이 종료되고 있음을 감지 할 수있는 중심적인 장소를 찾고 있습니다. – hurcane

0

FormCount 변수가 포함 된 모듈을 만듭니다. 이 변수는 응용 프로그램의 모든 양식에서 공유됩니다. 모든 폼의 Form_Initialize 메서드에서 FormCount 변수를 증가시킵니다. 모든 폼의 Form_Terminate 메서드에서 FormCount를 감소시킵니다. FormCount가 다시 0으로 떨어지면 폼 툴킷에 폼이 언로드되었음을 알릴 수 있습니다.

VB6에서는 단일 스레드 응용 프로그램을 만들기 때문에 다른 스레드가 실행되기 전에 한 폼의 초기화 (또는 종료) 메서드가 완료 될 때까지 실행되므로 다중 스레드 문제에 대해 걱정할 필요가 없습니다.

관련 문제