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