【问题标题】:Using ProcessExit to shutdown hardware devices in c#?在 C# 中使用 ProcessExit 关闭硬件设备?
【发布时间】:2014-07-12 20:10:06
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

标签: c# events shutdown


【解决方案1】:

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

【讨论】:

  • 天哪,我不敢相信我没有注意到“静态”。关闭线程,删除我的帐户:o
猜你喜欢
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 2015-07-02
  • 1970-01-01
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多