0

我有一个调用 UpdateCollections 方法的方法,该方法目前正在按顺序更新 3ObservableCollection<T>对象。为了提高这 3 个集合的性能和更新时间延迟,我想在单独的线程或其他任何方式中执行此操作,并在 3 个集合更新中的任何一个完成时通知调用者和 UI,并且还能够保留跨线程更新,因为所有 3集合对象是同一主集合对象的一部分。

以下是目前按顺序运行的示例代码:

public class CustomObservableCollection
{
    public ObservableCollection<T> CollectionObject1;
    public ObservableCollection<T> CollectionObject2;
    public ObservableCollection<T> CollectionObject3;

    public void UpdateCollectionX...N(CustomObservableCollection objectWithOnlyUpdates)
    {.............}
}

public class SomeBusinessClass
{
    CustomObservableCollection mainCollectionObject;
    public void UpdateCollections(CustomObservableCollection objectWithUpdatesOnly)
    {
        mainCollectionObject.UpdateCollection1(objectWithUpdatesOnly);
        mainCollectionObject.UpdateCollection2(objectWithUpdatesOnly);
        mainCollectionObject.UpdateCollection3(objectWithUpdatesOnly);
    }
}

基本上,通过观察上面的代码,我想在并行或单独的线程UpdateCollectionX中调用方法,所以我找到了一些选择如下实现这一目标的最佳方法是什么,以及我应该如何转换我当前的代码,以便一旦集合更新方法的 1 完成,它就会向调用方法和/或可能的 UI 发送某种通知(更新本身作为一个应用程序):WPF

  1. 任务并行库
  2. 反应式扩展(可以通过IObservable为类实现CustomObservableCollection
  3. 异步/等待
  4. Thread班级

我可以使用上面的任何方法或其他更好的方法,但我最担心并行更新时可能出现的跨线程异常,因为所有 3 个集合对象都是同一个自定义集合对象的一部分。

4

0 回答 0