![](/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.