我目前正在處理一個處理數據庫中的數據的WPF應用程序,當我用1000行左右的測試數據庫測試它時,它工作正常,但現在我要處理大約50000行,並且在處理過程中只是崩潰我「」應用程序「遇到了問題,需要關閉......您是否想向微軟發送錯誤報告......」。WPF應用程序遇到問題,需要關閉,如何獲得好消息?
現在這可能看起來像是其他一些問題的重複,但我已經嘗試了AppDomain.CurrentDomain.UnhandledException,AppDomain.CurrentDomain.ProcessExit,Application.DispatcherUnhandledException,它只是崩潰而沒有消息。
這裏是什麼樣子:
private void OnStartup(object sender, StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException += (s, args) =>
{
MessageBox.Show("Message1");
};
AppDomain.CurrentDomain.ProcessExit += (s, args) =>
{
MessageBox.Show("Message2");
};
this.DispatcherUnhandledException += (s, args) =>
{
MessageBox.Show("Message3");
};
try
{
Views.MainView view = new Views.MainView();
view.DataContext = new ViewModels.MainViewModel();
view.ShowDialog();
}
catch (Exception exception)
{
MessageBox.Show(exception.ToString());
}
}
的處理都可以通過命令啓動(使用命令綁定一個GUI按鈕來調用這個):
public void Process()
{
Thread workerThread = new Thread(new ThreadStart(DoProcess));
workerThread.IsBackground = true;
workerThread.Start();
}
private void DoProcess()
{
try
{
// Most probably crashes during that
DoStuff();
}
catch (Exception e)
{
System.Windows.MessageBox.Show(e.ToString());
}
}
我執行期間檢查內存使用情況它永遠不會超過70兆,所以這應該不成問題。我使用2個COM組件,一個是.exe,另一個是.dll,我不知道是否會有問題。請注意,有時這些組件會崩潰,而且當它發生時我會收到一條有用的錯誤消息。我使用NHibernate從數據庫讀取/寫入數據。
現在我完全不知道問題是什麼(DoStuff()部分是相當大的),我不明白錯誤是如何通過所有這些異常處理程序,並只是在沒有信息的情況下使應用程序崩潰。請注意,我無法在Visual Studio中調試應用程序,因爲我在沒有安裝Visual Studio的虛擬機上運行應用程序(並且我一直在等待2個月讓我的IT部門安裝我的sql服務器,以便我可以在我的電腦上運行我的應用程序)。
任何幫助,將不勝感激!
我會盡力答覆 – Carl
這沒有奏效。我只是嘗試編寫File.Create(「C:\\ dumpFile.txt」)而不是MessageBox.Show,但該文件仍未創建,並且仍然遇到應用程序崩潰。 – Carl
這可能意味着另一個線程崩潰,這就是爲什麼你的catch不起作用。將日誌記錄代碼添加到您的應用,以縮小崩潰的位置。 –