在使用 WPF 实现生产者消费者模式时,ObservableCollection
我使用了本示例中的封送处理技术,以确保在工作线程上创建项目时在 UI 线程上分派集合的事件。
在 winrt 中,我可以看到这样的封送处理Dispatcher
方式:
public void AddItem<T>(ObservableCollection<T> oc, T item)
{
if (Dispatcher.CheckAccess())
{
oc.Add(item);
}
else
{
Dispatcher.Invoke(new Action(t => oc.Add(t)), DispatcherPriority.DataBind, item);
}
}
可以切换成CoreDispatcher
这样:
public async void AddItem<T>(ObservableCollection<T> oc, T item)
{
if (Dispatcher.HasThreadAccess)
{
oc.Add(item);
}
else
{
Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { oc.Add(item); });
}
}
- 那是适当的使用
CoreDispatcher
吗? - 对于 winrt 中的基本并发生产者/消费者模式,是否有更好的方法来执行此操作?
Dispatcher
没有与我需要CoreDispatcher
从 UI 向下传递到编组代码相同的静态访问器方法吗?