【问题标题】:In .NET , is it possible to apply try catch inside an event handler? [closed]在 .NET 中,是否可以在事件处理程序中应用 try catch? [关闭]
【发布时间】:2015-07-24 00:14:31
【问题描述】:

我正在创建一个基于指纹识别的系统,因此我正在使用指纹识别器 DigitalPersona 做一个 Windows 服务。

此阅读器有许多方法,如 onFingerGone、OnFingerTouch 等。此方法是在指纹读取器被触摸时触发的事件。 一切都很顺利,直到那部分。但是当没有活动时......(我的意思是当指纹读取器没有被触摸时)会在控制台中引发错误。

"进程以代码 0 退出"

请帮忙。

一些细节: - 使用 Visual Studio 2010 .Net 4

【问题讨论】:

  • 请出示相关代码。是的,try catch 可以在事件处理程序中使用,它与方法没有什么不同。
  • 你有没有调试过,看看哪个方法抛出了异常?
  • 当然可以。但我认为这不是问题,因为您会得到未处理的异常,而不是代码 0 的退出。听起来您的应用程序可能会正常结束。
  • On* 方法通常是引发事件的代码,而不是事件处理程序。我不知道这是否会改变这里的任何东西。我们确实需要
  • 感谢您的回答 Cyral...没有相关代码,因为我使用的是 SDK,并且这些事件背后的代码是从接口调用的......

标签: c# .net visual-studio-2010 fingerprint


【解决方案1】:

错误代码 0 表示没有错误。

使用事件(OnFingerGone、OnFingerTouch)意味着您的应用程序等待它们。 “进程以代码 0 退出”通常意味着您的 控制台应用程序 的主线程 (?) 已完成,或者您的 WPF、WinForms 等应用程序调用了类似 this.Application.Close() 的东西。

例如:

class Pseudocode {
    event EventHandler myEvent;

    int main(){
        myEvent += onMyEvent;
        //do work 1
        return 0;
    }

    void onMyEvent(Object sender, EventArgs e){
       //do work 2
    }
    //other methods and work
}

如果 main() 中的工作量很小,应用程序将立即关闭。

在控制台应用程序中,您可以简单地添加 Console.ReadLine(); 来防止这种情况发生。 (在返回 0 之前;根据示例),因此您的应用程序将等待“Enter”键。

在窗口应用程序中,您需要寻找手动退出调用或类似的东西,因为它们不被称为“自关闭”。

【讨论】:

  • 感谢 Rawnald Gregory....但是我看不到事件在哪里被实例化,因为它是一个 SDK ...并且它的方法通过一个界面显示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-02-01
  • 2019-01-07
相关资源
最近更新 更多