【发布时间】:2019-11-18 13:42:48
【问题描述】:
我正在编写一个类库(用于 .Net Framework 4.7.2),其中包含涉及刷新文件的方法。此刷新应在响应直接方法调用时进行,但在调用应用程序提前退出时也应进行。
如果我在 WinForms 应用程序中编写代码,我可以使用
System.Windows.Forms.Application.ApplicationExit += FlushHandler;
向 ApplicationExit 事件添加处理程序并
System.Windows.Forms.Application.ApplicationExit -= FlushHandler;
删除该处理程序。
在类库中,我收到消息:
命名空间中不存在类型或命名空间名称“Forms” 'System.Windows'(您是否缺少程序集引用?)
如何在类库中执行与上述类似的操作,其中要处理的应用程序退出事件是调用 WinForms 应用程序的关闭?
【问题讨论】:
-
您可以尝试使用 AppDomain 类的 ProcessExit-event;见stackoverflow.com/questions/1119841/…
-
你为什么要这样做? DLL 库通常包含可由多个应用程序和平台加载的代码。通常它不是为特定于运行时而设计的,它不使用特定于平台的事件。您可以在 DLL 中创建和公开委托,并将其与正在使用它的项目中的事件挂钩
-
只要您的库仅在 Forms 应用程序中运行,就可以。但正如它所说,你需要add a reference 到
System.Windows.Forms。 -
@Fabjan 在这种情况下,DLL 将仅由我正在编写的 WinForms 应用程序使用,因此使其特定于运行时就可以了。