How to display error form App.xaml.cs in WPF Application
我正在开发一个WPF应用程序,其中我必须在全球范围内处理
为此,我参考了
相应地,我在主窗口上的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 | private void TestMethod() { string s = null; try { s.Trim(); } catch (Exception ex) { MessageBox.Show("A handled exception just occurred:" + ex.Message,"RestartApplication", MessageBoxButton.OK, MessageBoxImage.Warning); } s.Trim(); } |
在我的电脑里
1 2 3 4 5 6 7 8 9 10 | public App() : base() { this.Dispatcher.UnhandledException += Application_DispatcherUnhandledException; } private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { MessageBox.Show("An unhandled exception just occurred:" + e.Exception.Message,"Exception Sample", MessageBoxButton.OK, MessageBoxImage.Warning); e.Handled = true; } |
在这里,我希望有两个
但是vs在第二个
如何处理错误并显示来自
我引用了许多这样的链接:DispatcherUnhandledException似乎不起作用global-catch-exceptions-in-a-wpf-应用程序
更新:实时应用程序代码,是否第二个消息框未显示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | private void ListProcesses() { string s = null; Process[] localByName = Process.GetProcessesByName("notepad++"); DateTime test = new DateTime(); try { s.Trim(); foreach (Process p in localByName) { this.Dispatcher.Invoke(() => { if (storevalue != p.MainWindowTitle && !String.IsNullOrEmpty(p.MainWindowTitle)) { aTimer.Stop(); this.Visibility = Visibility.Visible; this.WindowStartupLocation = WindowStartupLocation.CenterScreen; this.Topmost = true; this.WindowState = System.Windows.WindowState.Maximized; this.ResizeMode = System.Windows.ResizeMode.NoResize; storevalue = p.MainWindowTitle; } }); } } catch (Exception ex) { aTimer.Stop(); MessageBoxResult result = MessageBox.Show("A handled exception just occurred:" + ex.Message,"RestartApplication", MessageBoxButton.OK, MessageBoxImage.Warning); } s.Trim(); } |
呃……我想我知道你怎么了。
当您从Visual Studio运行应用程序时,vs本身正在处理异常,因此它永远不会被处理,因此永远不会触发
编辑
好的,在研究了代码之后,我想您的
因此,在这种情况下,您需要自己处理例外情况,抱歉:)
删除Try/Catch块,然后运行"无调试启动(ctrl+f5)"。
1 | Application.DispatcherUnhandledException Event |
仅由未处理的异常激发。
我就是这样做的:
1 2 3 4 5 6 7 8 9 10 | public partial class Window12 : Window { public Window12() { InitializeComponent(); string id = null; id.Trim(); } } |
代码文件
1 2 3 4 5 6 7 8 9 10 11 12 | public partial class App : Application { public App() { this.DispatcherUnhandledException += App_DispatcherUnhandledException; } void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { MessageBox.Show("Unhandled exception occured >" + e.Exception.ToString()); } } |