ドキュメントからMessageBoxクラスへ:
メッセージ ボックスには常にオーナー ウィンドウがあります。既定では、メッセージ ボックスの所有者は、メッセージ ボックスが開かれた時点でアプリケーションで現在アクティブなウィンドウです。Windowただし、複数のオーバーロードのいずれかを使用して、の別の所有者を指定できますShow。オーナー ウィンドウの詳細については、 を参照してくださいWindow.Owner。
したがって、あなたの問題は、メッセージボックスがユーザーによって閉じられる前にアプリケーションが存在するこの質問に非常に似ています。
最初に試すことは、パラメーターnullとして渡すことです。Window
MessageBox.Show(null, ex.Message, "Error", MessageBoxButton.OK);
メインウィンドウオブジェクトなど、クラスのインスタンスがある場合は、Window代わりにそれを渡しますnull。
MessageBox.Show(mainWindow, ex.Message, "Error", MessageBoxButton.OK);
現在メイン ウィンドウ メソッドのいずれかを使用している場合はthis、Window として渡すことができます。
MessageBox.Show(this, ex.Message, "Error", MessageBoxButton.OK);
null現時点で使用可能なメイン ウィンドウ オブジェクトがない場合にのみ使用します。
MessageBox サンプルを見てください。thisがオーナー ウィンドウとして渡される場合と渡される場合の違いを確認できるはずですnull。