gpt4 book ai didi

c# - 由 ThreadPool 中的线程填充的 ObservableCollection

转载 作者:行者123 更新时间:2023-12-03 20:38:20 25 4
gpt4 key购买 nike

这是我在从 ThreadPool 获取的单独线程中将项目添加到 ObservableCollection 的方法。

我们知道它会引发异常:

这种类型的 CollectionView 不支持从不同于 Dispatcher 线程的线程更改其 SourceCollection。

我知道这个主题在这里很受欢迎,但我还没有找到适合下面代码中描述的情况的任何解决方案:

namespace WpfApplication1
{
class Item
{
public string name
{
get;
set;
}
}

class Container
{
public ObservableCollection<Item> internalList = new ObservableCollection<Item>();

}

public partial class MainWindow : Window
{
Container container = new Container();

void addItems()
{
Item item = new Item() { name = "jack" };
container.internalList.Add(item);

}

public MainWindow()
{
InitializeComponent();

ThreadPool.QueueUserWorkItem(delegate { this.addItems(); });
MyDataGrid.ItemsSource = container.internalList;

}
}
}

这里这个问题的最佳解决方案是什么?

谢谢!

最佳答案

替换

container.internalList.Add(item);

通过

Dispatcher.BeginInvoke(new Action(() => container.internalList.Add(item)));

这样 AddDispatcher 线程上执行。

关于c# - 由 ThreadPool 中的线程填充的 ObservableCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18696629/

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