从线程中显示MessageBox,因为它来自C#/ WPF中的主线程

时间:2013-11-12 18:06:04

标签: c# wpf multithreading messagebox

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

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

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

提高线程:

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

异常的捕获在MyMethod的各个部分。它是一个线程,自程序启动以来一直在循环中运行不间断。异常的原因是网络错误。

2 个答案:

答案 0 :(得分:10)

你可以在Dispatcher

上调用它
Application.Current.Dispatcher.Invoke(() => MessageBox.Show(...));

答案 1 :(得分:0)