![](/img/trans.png)
[英]Receiving CrossThreadMessagingException while Debugging WinForms Application
[英]Global exception catch works only while debugging the WinForms application
我在WinForms应用程序中实现了以下全局异常catch
:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyMainForm());
}
catch (Exception ex)
{
MessageBox.Show("UNHANDLED EXCEPTION: The program will be terminated. Details follow:\n\n" +
getExceptionInfoWithDebuggerOutput(ex),
"Global Exception",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
然后在代码下,引发一个异常(之所以这样-完全是由于我的健忘):
public partial class MyPage : UserControl
{
void func1()
{
SqlConnectionStringBuilder conStr = null;
//... later
conStr.DataSource = strServer; //<<--- Where exception is raised
}
}
现在,如果要调试项目,则可以从全局异常处理程序中看到“ Global Exception
消息框。
但是,如果我不调试我的项目并以Ctrl + F5的形式运行它,或者如果我构建一个Release项目,则将得到以下窗口,而不是上面编码的窗口:
任何想法如何使我的全局异常处理程序代替处理?
您应该挂接诸如AppDomain.UnhandledException之类的事件。
这些事件在您在发布模式下看到的全局错误处理程序之前引发。 这使您可以在以更好的方式解决之前记录错误。
还引发了其他事件。 例如, Application.ThreadException 。 阅读文档可以使您更好地了解自己的特定需求。
我必须注意,您看到的错误是NullReferenceException
..最好在您的代码中很好地处理。 尽管如此,挂接这些事件并记录异常是一个好主意。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.