2

I have a window which runs from a thread, let's call it MainThread, and a background thread which performs other non-graphical tasks.

Sometimes the background thread will call the MessageBox.Show(...) method (which is modal and stops the background thread). Before this call, I would like to suspend the MainThread and resume it after so that my MainWindow's controls are disabled while the messageBox is shown.

So my questions are:

  • How do I access the mainThread from the backgroundThread?
  • How do I suspend/resume it (Considering Thread.suspend is depricated)?
4

1 に答える 1

3

メイン スレッドを中断する代わりに、Control.Invoke(Windows フォーム) またはDispatcher.Invoke(WPF) を使用して、メイン スレッドにメッセージ ボックスを実際に表示し、バックグラウンド スレッドから呼び出すことができます。

これには、希望する動作を提供するだけでなく、メッセージ ボックスを適切な Window にペアレント化できるという利点もあります。これにより、適切なモーダル メッセージ ボックスの動作が得られます。

于 2013-09-02T19:19:45.143 に答える