Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ProcessExit关闭c#中的硬件设备?_C#_Events_Shutdown - Fatal编程技术网

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

使用ProcessExit关闭c#中的硬件设备?,c#,events,shutdown,C#,Events,Shutdown,我有一个硬件设备,需要在程序执行结束时卸载,否则它将处于未定义/不稳定/危险状态。这在正常操作期间非常容易,但在任何类型的碰撞或意外情况下,通常都无法正确卸载 搜索时,我发现我可以设置一个事件来在进程退出时清理电路板,或者至少是其中的一小部分: public MainForm() { ... AppDomain.CurrentDomain.ProcessExit += new EventHandler(OnProcessExit); ... } static void OnProc

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

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

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

static void OnProcessExit(object sender, EventArgs e)
{            myHardwareDevice.checkAndPerformSafeShutdown();
}
其中,
checkAndPerformSafeShutdown
是本机dll函数调用的包装器,用于清理驱动程序并将所有硬件置于安全状态。但是,这无法通过以下方式编译:

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


这个事件处理程序的作用域是什么?为什么它与类中的任何其他事件处理程序不同?有什么方法可以让我得到硬件设备的参考吗

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

MyHardwareDevice
类吗?您是否已将
MyHardwareDevice
声明为静态?另外--没有回答您的问题,但可能会引发更多问题哦,天哪,我不敢相信我没有注意到“静态”。关闭线程,删除我的帐户:o