2011-10-31 31 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,而不必担心调度程序问题。

相关问题