如何在非UI线程上调用Application.Exit我有一个UI设计问题。我想在非UI线程遇到异常时退出应用程序。基本上,事件是这样的:主窗体->ShowDialog(MainThread)ofChildWinForm->StartBackgroundThread(WorkerThread)->ExceptionOccurs->ShowErrorForm(WorkerThread)当用户点击ErrorForm上的退出按钮时,我想退出整个应用程序。但是,执行以下调用不起作用。Invoker.Invoke((Action)(()=>{Application.Exit();}),null);调用者引用主窗体SynchronizedContext。但是,由于MainThread仍在等待subWinForm返回其控件,它可能无法处理Application.Exit()。处理后台工作线程抛出的异常的更好设计是什么?取消后台worker,给BackgroundWorker的RunWorkerCompletedEvent发送一个参数,判断是否有异常。然后只需调用Application.Exit()。我知道这样的调用在Silverlight中有效:Dispatcher.BeginInvoke(()=>Application.Exit());或者,如果WinForms类没有Dispatcher:Invoker.BeginInvoke(()=>Application.Exit());你有很多额外的不必要的代码((Action),null,不必要的括号和括号)。我不认为它会阻止它正常工作,但无论如何它更容易阅读。以上就是C#学习教程:HowtocallApplication.Exitonanon-UIthread。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
