我有一个硬件设备需要在程序执行结束时卸载,否则它将处于未定义/不稳定/危险状态。这在正常操作期间很容易,但在任何类型的崩溃或意外情况下,通常不会正常卸载。
正在搜索,我发现我可以设置一个事件来清理流程退出时的电路板,或者至少是其中的一小部分:
public MainForm()
{
...
AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit);
...
}
static void OnProcessExit(object sender, EventArgs e)
{ myHardwareDevice.checkAndPerformSafeShutdown();
}
其中checkAndPerformSafeShutdown
是本机dll函数调用的包装器,用于清理驱动程序并将所有硬件置于安全状态。但是,这无法编译:
错误CS0120:非静态字段,方法或属性“projectNme.MainForm.myHardwareDevice”需要对象引用。
此事件处理程序的范围是什么?为什么它与类中的任何其他事件处理程序不同?有没有我可以获得硬件设备的参考?
答案 0 :(得分:0)
将事件处理程序定义为MainForm上的实例方法,并且您可以访问所有实例变量。