使用ProcessExit关闭c#中的硬件设备?

时间:2014-07-12 20:10:06

标签: c# events shutdown

我有一个硬件设备需要在程序执行结束时卸载,否则它将处于未定义/不稳定/危险状态。这在正常操作期间很容易,但在任何类型的崩溃或意外情况下,通常不会正常卸载。

正在搜索,我发现我可以设置一个事件来清理流程退出时的电路板,或者至少是其中的一小部分:

public MainForm()
{
...
     AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit); 
...
}

static void OnProcessExit(object sender, EventArgs e)
{            myHardwareDevice.checkAndPerformSafeShutdown();
}

其中checkAndPerformSafeShutdown是本机dll函数调用的包装器,用于清理驱动程序并将所有硬件置于安全状态。但是,这无法编译:

  

错误CS0120:非静态字段,方法或属性“projectNme.MainForm.myHardwareDevice”需要对象引用。

此事件处理程序的范围是什么?为什么它与类中的任何其他事件处理程序不同?有没有我可以获得硬件设备的参考?

1 个答案:

答案 0 :(得分:0)

将事件处理程序定义为MainForm上的实例方法,并且您可以访问所有实例变量。