ActiveX用にラップしたときに.netコントロールが適切にクリーンアップされないという問題があります。
デフォルトの動作では、SDKのテストコンテナアプリ(TstCon32.exe)を閉じようとすると、GUIなしのプロセスとして実行されたままになります。
私が最初にグーグルで見つけた回避策は、WndProcをオーバーライドしてEnvironment.Exit(0)
手動で呼び出すことでした。これにより、TstCon32.exeが完全にシャットダウンしました。ただし、コントロールをホストする必要があるアプリケーションが壊れています。
アプリはMDIであり、コントロールを含むページが閉じられたときにWM_DESTROYが送信されます。その時点で、Environment.Exit(0)
呼び出しはアプリ全体を吹き飛ばします。別の方法として試しApplication.Exit()
ましたが、TstCon32はまだ見えないまま実行されています。
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
// WM_DESTROY
if (m.Msg == 2)
Environment.Exit(0);
}