在构造函数中使用线程异常和app域未处理的异常

时间:2012-12-11 16:07:49

标签: c# winforms inheritance exception-handling

之前我使用过Application.ThreadExceptionAppDomain.CurrentDomain.UnhandledException,但通常我只将它用于单个表单。通常我会使用Main中的Program.cs

try {
    AppDomain.CurrentDomain.UnhandledException += (sender, e) => .Handle(sender, (Exception)e.ExceptionObject);
    Application.ThreadException += (sender, e) => ExceptionHandler.Handle(sender, e.Exception);
    Application.Run(ApplicationBase);
} catch (Exception ex) {
    MessageBox.Show("Handled Exception");
}

在我的新情况下,我的当前项目有很多表单,其中包含其他表单继承的单个基本表单。

我想要做的是处理从基本表单代码中派生形式中抛出的异常 - 我将上面的代码插入到我的base的构造函数中,希望我可以这样做,但是当有异常时,它没有参加比赛。

为什么我不能在构造函数和任何替代方法中执行此操作?

注意:我之前在Vb.net而不是C#中提出此问题,因此删除了我之前的问题并重构了我的代码,以便我可以得到C#个答案。

1 个答案:

答案 0 :(得分:1)

这些事件是全球事件;他们与个人形式无关。

您可以将当前代码保存在Main()中,并且可以使用多种表单。 (除非你有多个UI线程)