从VB.NET中的另一个线程挂起一个线程

时间:2013-09-02 19:16:08

标签: vb.net multithreading

我有一个从线程运行的窗口,我们称之为MainThread,以及执行其他非图形任务的后台线程。

有时后台线程会调用MessageBox.Show(...)方法(模态并停止后台线程)。在此调用之前,我想暂停MainThread并恢复它,以便在显示messageBox时禁用我的MainWindow控件。

所以我的问题是:

  • 如何从backgroundThread访问mainThread?
  • 如何暂停/恢复它(考虑Thread.suspend已被删除)?

1 个答案:

答案 0 :(得分:3)

您可以使用Control.Invoke(Windows窗体)或Dispatcher.Invoke(WPF)实际显示主线程上的消息框,而不是挂起主线程,而是从后台线程调用它。

除了提供您希望的行为之外,这还有一个优点,即允许您将消息框的父级框架添加到正确的窗口,这将提供正确的模态消息框行为。