有一个线程可以抛出异常,当它被捕获时,会显示某个消息框,然后软件关闭。
但是,问题是由于它不是程序的主线程,因此当我显示消息框时,程序窗口仍然可供用户交互。它不会锁定屏幕,这与主窗口上方显示的消息框不同。我想避免这种情况。
我想知道最好的方法是什么。到目前为止,我想使用某种线程通信(从未在 C# 中使用过)从主线程引发消息框。
提高线程:
Thread thread = new Thread(new ThreadStart(MyClass.MyMethod));
thread.IsBackground = true;
thread.Start();
异常的捕获位于MyMethod
的各个部分。它是一个自程序启动以来一直在循环中不间断运行的线程。异常的原因是网络错误。
您可能只需在Dispatcher
上调用它:
Application.Current.Dispatcher.Invoke(() => MessageBox.Show(...));
使用 SynchronizationContext
(http://msdn.microsoft.com/library/system.threading.synchronizationcontext(v=vs.110).aspx)