显示来自线程的消息框,就像它来自 C#/WPF 中的主线程一样



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

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

我想知道最好的方法是什么。到目前为止,我想使用某种线程通信(从未在 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)

最新更新