0

有没有办法订阅这个事件或类似的东西,所以我可以在对象完成之前执行一些清理代码?

4

2 回答 2

3

该事件是静态的,因此在 DLL 中使用它不会导致任何问题。

但是请注意,仅当您的类库实际上是从 Winforms 应用程序中使用时才会触发该事件。只有公开只能从 Winforms 应用程序使用的功能,才能确定这一点。像自定义控件或 UserControl。

替代方案是 AppDomain 事件、DomainUnload 和 ProcessExit。或者只是期待主应用程序让您知道关机。这通常是更好的选择,您不一定知道应用程序退出的原因。例如,您不想在硬崩溃时保存设置。请注意 ApplicationSettingsBase 类也遵循该模式,您必须显式调用其 Save() 方法。

于 2012-11-11T20:49:03.737 回答
1

您订阅此事件的方式与订阅任何事件的方式相同。

ApplicationExit MSDN 页面上的示例很清楚:

Application.ApplicationExit += new EventHandler(this.OnApplicationExit);

private void OnApplicationExit(object sender, EventArgs e) {
    // do your cleanups
}
于 2012-11-11T20:40:23.067 回答