我的 .net 控件在打包以供 activeX 使用时没有得到正确清理时遇到问题。
默认行为使 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);
}