Debug.Fail给我一个“Dispatcher处理已被暂停”的错误

时间:2011-10-31 14:33:41

标签: .net wpf dispatcher

我在代码中遇到问题导致调用Debug.Fail。我使用Debug.Assert和Debug.Fail相当多,因为它不仅给我即时通知存在问题,而且还提供有关问题所在位置和位置的信息。

但是这次Debug.Fail本身引起了更大的问题,因为UI(WPF)冻结了以下错误:

  

调度程序处理已暂停,但邮件仍在处理中。

我能做些什么来使Debug.Fail成功?我绝对不希望Debug.Fail有代码来检查是调用Invoke还是BeginInvoke。

编辑:我想更换DefaultTraceListener可以解决问题吗?

2 个答案:

答案 0 :(得分:1)

看起来你是来自DependencyProperty的Debug.Fail更改回调。

您可以在此处找到完整答案:'Dispatcher processing has been suspended' InvalidOperationException when calling ShowDialog

答案 1 :(得分:1)

Debug.Fail默认使用DefaultTraceListener。使用ILSpy,我可以看到DefaultTraceListener.Fail拨打AssertWrapper.ShowAssert。要解决此问题,请将DefaultTraceListener替换为您自己的AssertWrapper.ShowAssert,其中Dispatcher会调用Debug.Assert

瞧!现在,您可以致电Debug.Fail和{{1}}而无需担心调度员问题。