2016-10-11 9 views
-1

UIにカスタムツールバーを追加する単語アドインがあります。ツールバーには、クリックするとWPFウィンドウが開くボタンがあります。コントロールと対話するときに新しいWPFウィンドウでInvalidOperationExceptionが発生する

最近、そのウィンドウの周りに奇妙な動作が発生しています。ウィンドウ上の任意のコントロールと対話しようとすると(つまり、テキストボックスをクリックして入力を開始し、チェックボックスなどをチェックすると)、ウィンドウが開くとすぐに開きます。私は数が多いInvalidOperationException:

************** Exception Text ************** 

System.InvalidOperationException: Dispatcher processing has been suspended, but messages are still being processed. 

    at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 

    at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled) 

    at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o) 

    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) 

    at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler) 

これは、私がウィンドウ内のコントロールと対話する場合にのみ発生します。特定のコントロールに関連するものではありません。私はすべてを削除し、ウィンドウの中央にテキストボックスを作成して空にしました。それでも私がクリックすると、アプリがクラッシュします。

この例外では、ビジュアルツリーの変更の途中でビジュアルツリーを変更するアクションが実行されている可能性があることがわかりました。しかし、私はそんなことはしていません。私はちょうどウィンドウを開いて、内部のコントロールをクリックしています。

誰かが原因について考えていますか?

+0

おそらく関連しています:http://stackoverflow.com/questions/23452864/wpf-dispatcher-processing-has-been-suspended-but-messages-are-still-being-pro – TyCobb

+0

ええ、すでに開こうとしましたDispatcher経由のウィンドウでは、動作しませんでした。問題は、ウィンドウが開いたときに例外がスローされないことです。ウィンドウ内の何かと対話しようとするとスローされます。 –

+0

その問題を再現するサンプルを最小限に抑えてください。ところで、私はこれがms-wordに関連しているのではないかと疑うので、タグを削除すると、ここにもっと多くのユーザーがいる可能性があります。 –

答えて

0

興味のある方は、私は最終的に問題を解決することができました。 wpfダイアログは、実際にはelementhostを持つWindowsFormsフォームであることが判明しました。

this.TopMost = true; 
Application.DoEvents(); 
this.TopMost = false; 

これは、それが最初に示されたときの対話は、常に上部に表示されていることを確認することでした:ElementHostのVisibleChangedイベント上で実行された親のWinForms形でいくつかのコードがありました。このコードが削除されるとすぐに、例外は消えました。

関連する問題