2

我可以在 C# 中为 BeginInvoke 方法注册一个包罗万象的处理程序吗?

在我的 MainForm 中启动时,我有这个代码

        Application.ThreadException += new ThreadExceptionEventHandler(UIExceptionHandler);
        AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
        AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);

我认为这就足够了,但另一种形式的例外是取消我的申请。我该如何处理?(我真的不想进入每个用户控件,我有一个使用我自己的 try..catch 添加代理 BeginInvoke 方法,也不想将它添加到我拥有的每个 BeginInvoke 调用中......那会很乏味与添加一个包罗万象的处理程序相比)。

谢谢,院长

4

1 回答 1

2

尝试这个:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);

这是关于 SetUnhandledExceptionMode 的 MSDN

此外,如果您在 debug (JoshL's answer) 中看到这个问题,可能会更有意义。基本上,它默认为自动,如果jitDebugging配置设置为 true(如果您正在调试,则为 true),那么应用程序将抛出而不是 catch 到您的处理程序中。

于 2012-06-29T16:20:47.620 回答