2011-10-31 32 views
2

我在調用Debug.Fail的代碼中遇到了問題。我使用Debug.Assert和Debug.Fail相當多,因爲它不僅讓我立即知道存在問題,還提供了有關問題的位置和位置的信息。Debug.Fail給我一個「調度處理已被暫停」的錯誤

但此時Debug.Fail本身造成更大的問題,因爲用戶界面(WPF)凍結becuse以下錯誤:

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

有什麼我可以做,使Debug.Fail成功?我絕對不想讓Debug.Fail檢查代碼是否調用Invoke或BeginInvoke。

編輯:我想代替DefaultTraceListener會做詭計嗎?

回答

1

Debug.Fail將默認使用DefaultTraceListener。使用ILSpy,我可以看到DefaultTraceListener.Fail撥打AssertWrapper.ShowAssert。爲了解決這個問題,請用你自己的DefaultTraceListener替代,該調度器在AssertWrapper.ShowAssert的呼叫周圍有調度員守衛。

瞧!現在您可以撥打Debug.AssertDebug.Fail,而不必擔心調度程序問題。

相關問題