我有一个绑定到viewmodel
中的阻塞集合的列表<ListBox Grid.Row="1" ItemsSource="{Binding PlantControllers}"
和财产
public BlockingCollection<PLANTCONTROLLER> PlantControllers
{
get { return _plant.PlantControllers; }
}
使阻塞集合可观察的最简单方法是什么,似乎无法找到任何好的例子
答案 0 :(得分:2)
使用BlockingCollection
作为“入口点”,用于使用生产者/消费者模式进入UI线程的数据。
您的主题都将项目添加到BlockingCollection
,并且在您的UI线程上使用计时器偶尔检查是否有新项目。如果有,请将它们添加到ObservableCollection
。
另一个选择可能是让每个线程都有对UI线程调度程序的引用,并使用Dispatcher.BeginInvoke()
对从BlockingCollection
获取的方法进行排队并添加到ObservableCollection
。