gpt4 book ai didi

wpf - 无法在多线程中操作ObservableCollection

转载 作者:行者123 更新时间:2023-12-02 13:11:42 30 4
gpt4 key购买 nike

ObservableCollection 似乎只支持 UI 线程的添加、删除、清除操作,如果由 NO UI 线程操作,则会抛出 Not Support Exception。我尝试重写 ObservableCollection 的方法,不幸的是,我遇到了很多问题。任何人都可以提供一个可以多线程操作的 ObservableCollection 示例吗?非常感谢!

最佳答案

使用 Kent 提供的链接,您可以使用以下代码跨线程修改集合:

while (!Monitor.TryEnter(_lock, 10))
{
DoEvents();
}

try
{
//modify collection
}
finally
{
Monitor.Exit(_lock);
}

但是,如果您只是想修改原始线程上的集合,您可以尝试使用 UI 线程的回调。我通常会做这样的事情:

this.Dispatcher.Invoke(new MyDelegate((myParam) =>
{
this.MyCollection.Add(myParam);
}), state);

关于wpf - 无法在多线程中操作ObservableCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/187069/

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