4

有一个线程可以抛出异常,当它被捕获时,会显示一个特定的消息框,然后软件关闭。

但是,问题在于,由于它不是程序的主线程,所以当我显示消息框时,程序窗口仍然可以自由地供用户交互。与消息框显示在主窗口上方不同,它不会锁定屏幕。我想避免这种情况。

我想知道最好的方法是什么。到目前为止,我一直在考虑使用某种线程通信(在 C# 中从未使用过)来从主线程中引发消息框。

提高线程:

Thread thread = new Thread(new ThreadStart(MyClass.MyMethod));
thread.IsBackground = true;
thread.Start();

异常的捕获在MyMethod. 它是一个线程,从程序开始就一直在循环中不停地运行。异常的原因是网络错误。

4

2 回答 2

12

您可能只需在以下位置调用它Dispatcher

Application.Current.Dispatcher.Invoke(() => MessageBox.Show(...));
于 2013-11-12T18:22:07.627 回答
0

您也可以使用SynchronizationContexthttp://msdn.microsoft.com/library/system.threading.synchronizationcontext(v=vs.110).aspx

于 2013-11-12T19:05:29.857 回答