我正在开发一个 wpf 应用程序,如果正在进行一些冗长的工作,它会向用户显示等待对话框。我创建了等待对话框作为继承自 System.Windows.Forms.Form 的 Windows 窗体。当用户更改某些设置并应用时,我会显示此等待对话框并让应用程序验证并保存新配置。为了显示这个对话框,我创建了一个线程并调用了一个方法,该方法又调用了 waitdialog 表单的 ShowDialog() 方法。验证并保存设置后,我需要隐藏/消除此等待对话框表单。因此,Thread.Abort() 用于中止显示等待对话框的线程。
这样,当用户单击应用按钮保存新配置时,等待对话框会正确显示和隐藏,如果用户输入错误,则会显示一个消息框。现在,如果用户再次单击应用按钮,应用程序会显示一个未处理的异常消息框,说明“线程正在中止”。为了解决这个问题,我使用了以下方法:
1- 将 Thread.Abort() 语句放入 try/catch 块中。
2- 在 catch 块中使用了 Thread.ResetAbort() 语句。
3-在应用程序启动时订阅不同的事件:
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
AppDomain.CurrentDomain.FirstChanceException += new EventHandler<System.Runtime.ExceptionServices.FirstChanceExceptionEventArgs>(CurrentDomain_FirstChanceException);
this.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
System.Windows.Forms.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
我仍然无法吃那个例外。请提出一些解决问题的方法。因为它会导致一个奇怪的异常并杀死应用程序。