【发布时间】:2014-01-22 10:58:10
【问题描述】:
我有一个 windows 窗体应用程序,关闭主窗体后进程不退出。
我使用 ApplicationContext,因为我有一个演示者来生成我的主表单。
Application.Run(new ApplicationContext(Instance.InitPresentationManager()));
出于调试目的,我重写了 DestroyHandle 和 OnHandleDestroyed 方法。 在那里我可以看到 DestroyHandle 被调用但 OnHandleDestroyed 没有! 这就是我的进程仍在运行的原因,因为 ApplicationContext 在内部注册到 HandleDestroyed 事件。
在 DestroyHandle 方法中,属性 HandleCreated 甚至从 true 变为 false。 我什至重写了 WndProc 并且可以看到没有收到消息“2”(这个在 Control 类中调用 WmDestroy 并触发 OnHandleDestroyed 事件)。
这怎么可能?
备注:
- OnHandleDestroy 仅在 RecreatingHandle 为 true 时才在开始时调用
- 附加到进程并中断所有线程时,主线程仍在Application.Run方法中
- 我什至附上了一个内存分析器,它告诉我不再有我的主窗体的实时实例
- 主窗体的 Dispose 中的 Application.Exit 工作并处理症状,但不处理问题本身
- 电脑重启后一段时间正常工作,但最终问题再次出现
- Win 7 64 位,VS 2010,.net 4.0
【问题讨论】:
标签: c# winforms process exit applicationcontext