Skip to main content
 首页 » 编程设计

c#之如果从同一个线程调用 Dispatcher.BeginInvoke 是否会将调用排队

2024年12月31日21yyy_WW

如果我有这样的电话:

Application.Current.Dispatcher.BeginInvoke(() => someAction); 

从 Dispatcher 线程调用的它是排队等待稍后执行还是立即执行,因为它不需要从一个线程切换到另一个线程?

请您参考如下方法:

正如其他人指出的那样,它确实需要排队。解决这个问题的一个有用方法是定义:

public void DispatchIfNecessary(Action action) { 
    if (!Dispatcher.CheckAccess()) 
        Dispatcher.Invoke(action); 
    else 
        action.Invoke(); 
} 

可以称为:

DispatchIfNecessary(() => { 
    someAction... 
});