代码之家  ›  专栏  ›  技术社区  ›  Kazuhiko Nakayama

将ObservableCollection中的项更新为线程安全的

  •  -2
  • Kazuhiko Nakayama  · 技术社区  · 6 年前

    有什么好方法可以更新一个项目吗 作为“线程安全”在可观察集合中?

    这是我的路。

    var target = MyCollection.Where(i => i.Key== a_Key).Single();
    MyCollection[MyCollection.IndexOf(target)] = NewValue;
    

    但我担心。如果我使用索引,它可能不安全。 请告诉我。

    在Internet上,有一些线程安全的可观察集合。 我想用一号。

    有更好的办法吗?

    1. https://gist.github.com/thomaslevesque/10023516
    2. https://www.codeproject.com/Articles/64936/Multithreaded-ObservableImmutableCollection
    3. https://www.nuget.org/packages/ParallelExtensionsExtras/
    4. https://gist.github.com/anonymous/26d9d070619de58fa8e28ea21fff04fd

    编辑(1)

    当我使用索引替换时,我不得不担心其他线程更改或排序集合的可能性。索引可能会更改,直到覆盖。有可能吗?

    我想知道更新/覆盖集合项的更好方法。

    如果有方法更新/覆盖没有索引的项,请教我..

    1 回复  |  直到 6 年前
        1
  •  1
  •   mm8    6 年前

    只能更新数据绑定 ObservableCollection<T> 在调度程序线程上,除非使用 BindingOperations.EnableCollectionSynchronization 在.NETFramework4.5中引入的方法。

    此方法接受 object 访问集合时锁定。请看 this 举个例子。

    推荐文章