gpt4 book ai didi

wpf - 如何检测 Dispatcher.DisableProcessing 是否处于事件状态?

转载 作者:行者123 更新时间:2023-12-02 04:03:49 24 4
gpt4 key购买 nike

如果在 Dispatcher 挂起(调用 Dispatcher.DisableProcessing())的情况下尝试显示消息框,则会引发异常。

InvalidOperationException: 'Dispatcher processing has been suspended' (see here).

有谁知道如何检测 Dispatcher 是否暂停(以便我知道何时调用 BeginInvoke())?

编辑1:

为了响应 Application.DispatcherUnhandledException 事件,我试图显示一个 MessageBox。但是,如果在数据绑定(bind)期间引发此未处理的异常(即 ItemsControl.ItemsSource),则 Dispatcher 将挂起。尝试显示 MessageBox 然后失败。始终使用 Dispatcher.BeginInvoke() 可以解决问题,但除非确实必要,否则我不想这样做。

编辑2:

使用反射来完成此工作,如下所示:

var dispatcherType = typeof(Dispatcher);
var countField = dispatcherType.GetField("_disableProcessingCount", BindingFlags.Instance | BindingFlags.NonPublic);
var count = (int)countField.GetValue(Dispatcher.CurrentDispatcher);
var suspended = count > 0;

最佳答案

那里没有公共(public)接口(interface),所以你没有合法的方式来判断它是否被暂停。您仍然可以使用反射,但一般来说,这表明您正在做一些完全错误的事情。

如果您可以向我们提供更多详细信息,我们可以建议适当的解决方案吗?

关于wpf - 如何检测 Dispatcher.DisableProcessing 是否处于事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com