我在代码中遇到问题导致调用Debug.Fail。我使用Debug.Assert和Debug.Fail相当多,因为它不仅给我即时通知存在问题,而且还提供有关问题所在位置和位置的信息。
但是这次Debug.Fail本身引起了更大的问题,因为UI(WPF)冻结了以下错误:
调度程序处理已暂停,但邮件仍在处理中。
我能做些什么来使Debug.Fail成功?我绝对不希望Debug.Fail有代码来检查是调用Invoke还是BeginInvoke。
编辑:我想更换DefaultTraceListener可以解决问题吗?
答案 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}}而无需担心调度员问题。