1

VB6 アプリケーションは、Interop Forms Toolkit を使用して、.NET で記述されたフォームを操作しています。ツールキットのドキュメントでは、ツールキットのメソッドを呼び出して、VB6 アプリケーションのシャットダウン時にツールキットに通知することを推奨しています。

VB6 アプリケーションは、スプラッシュ スクリーンをロードする Sub Main プロシージャを使用してから、いくつかのモードレス フォームを表示します。Sub Main が完了すると、アプリケーションはまだ実行されています。アプリケーションがシャットダウン中であることを検出し、Toolkit で cleanup メソッドを呼び出すにはどうすればよいですか?

4

3 に答える 3

3

モジュール (おそらく Sub Main を含むもの) で、クリーンアップ コードを保持するパブリック サブ (AppCleanUp など) を作成します。

プロジェクトにクラスを追加します (clsAppCleanup など)。このクラスで、前の手順で作成したサブルーチンを呼び出す Class_Terminate イベント ハンドラーにコードを追加します。

モジュール (おそらく Sub Main を含むモジュール) で、clsAppCleanup の変数を定義します。

Sub Main で、clsAppCleanup をインスタンス化します。

アプリがシャットダウンされると、クラスの終了イベントにより、クリーンアップ コードが実行されます。

于 2008-09-23T20:42:50.840 に答える
0

FormCount変数を含むモジュールを作成します。この変数は、アプリケーションのすべてのフォームで共有されます。すべてのフォームのForm_InitializeメソッドでFormCount変数をインクリメントします。すべてのフォームのForm_TerminateメソッドでFormCountをデクリメントします。FormCountが0に戻ったら、フォームがアンロードされたことをフォームツールキットに通知できます。

VB6はシングルスレッドアプリケーションを作成するため、マルチスレッドの問題について心配する必要はありません。そのため、あるフォームのInitialize(またはTerminate)メソッドは、他のフォームが実行を開始する前に完了するまで実行されます。

于 2008-11-26T21:11:48.487 に答える
0

VB6 で書いてからしばらく経ちましたが、私の記憶が正しければ、Unload イベントを使用してクリーンアップ コードを呼び出すことができます (.net の終了イベントに似ています)。また、実行中の VB6 アプリに他のフォームがないことを確認することもできます

于 2008-09-23T20:42:23.633 に答える