2

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

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

所以我的问题是:

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

1 回答 1

3

您可以使用Control.Invoke(Windows Forms) 或Dispatcher.Invoke(WPF) 在主线程上实际显示消息框,而不是暂停主线程,但从后台线程调用它。

除了提供您希望的行为之外,这还具有允许您将消息框设置为正确的窗口的优点,这将提供正确的模式消息框行为。

于 2013-09-02T19:19:45.143 回答