小编Mur*_*uri的帖子

如何检测Dispatcher.DisableProcessing是否处于活动状态?

如果Dispatcher挂起(Dispatcher.DisableProcessing()调用),则尝试显示消息框时会引发异常.

InvalidOperationException:'Dispatcher processing has a suspended'(参见此处).

有谁知道我怎么能检测到Dispatcher暂停的地方(所以我知道什么时候打电话BeginInvoke())?

编辑1:

为了响应Application.DispatcherUnhandledException事件,我试图显示一个MessageBox.但是,如果在DataBinding(即ItemsControl.ItemsSource)期间抛出此未处理的异常,Dispatcher则会暂停.试图显示MessageBox然后失败.总是使用Dispatcher.BeginInvoke()解决问题,但我不想这样做,除非真的有必要.

编辑2:

使用Reflection完成此操作的方式如下:

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

wpf dispatcher

10
推荐指数
1
解决办法
3702
查看次数

标签 统计

dispatcher ×1

wpf ×1