gpt4 book ai didi

c# - Dispatcher.Invoke on application idle on button click - 我的 UI 是否卡住/阻塞

转载 作者:行者123 更新时间:2023-11-30 17:38:20 30 4
gpt4 key购买 nike

例如,假设您有一些例程注册为 ApplicationIdle 的 BeginInvoke

Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, (Action)OffLoadWork);

现在在某些情况下,需要在 UI 中执行操作时执行此 OffLoadWork,例如单击按钮,我调用它是否安全

Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.ApplicationIdle, (Func<object>)(() =>
{
//do nothing just wait for the OffLoadWork to happen...
return null;
}));

或者我的 UI 是否会卡住,因为我正处于 UI 操作的中间,所以它什么时候真正空闲?

在我的第一次测试中,它似乎可以工作,但我只是想确保没有办法让它卡住/阻塞。

最佳答案

我认为您混淆了 DispatcherPriority.ApplicationIdle。 Invoke 是同步的,可以阻止您的 UI。

DispatcherPriority 这里根据定义是优先级,相对于 Dispatcher 事件队列中的其他未决操作,调用指定的方法。因此,如果您的操作是 Dispatcher 队列中唯一发生并在 UI 线程上触发的操作,它将阻塞它直到它不返回。

关于c# - Dispatcher.Invoke on application idle on button click - 我的 UI 是否卡住/阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36785910/

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