c# - 在 Observable 完成后做点什么?

标签 c# linq observable

我正在使用 IObservable 在后台进行一些加载。我想指定何时完成加载。我怎样才能只做一次,而不是每次我的数据检索器都返回 yield ?我该怎么做?

bool IsLoading = true;
ObservableCollection<MyData> dataList = new
ObservableCollection<MyData>();
DataLoader.RetrieveData().ToObservable(Scheduler.ThreadPool).Select(x => x).ObserverOn(Scheduler.Dispatcher).Subscribe(x => {
    dataList.Add(x);
    IsLoading = false;});

最佳答案

你应该看看 Finally extension method ,它会完全按照您的意愿行事!

bool IsLoading = true;
ObservableCollection<MyData> dataList = new ObservableCollection<MyData>();
DataLoader.RetrieveData()
  .ToObservable(Scheduler.ThreadPool)
  .Select(x => x)
  .ObserverOn(Scheduler.Dispatcher)
  .Finally(() => IsLoading = false)
  .Subscribe(x => dataList.Add(x));

这应该在可观察序列终止后执行。

关于c# - 在 Observable 完成后做点什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7982170/

相关文章:

c# - 从一台电脑复制到另一台电脑后,WebService (.asmx) 功能未显示

c# - TSQL 性能与 @@Error 和它们可以被替换吗?

c# - 如果我使用类似 NHibernate 的 ORM,为什么还需要 LINQ?

c# - 使用 LINQ lambda 替换字符串中数组中的字符

c# - 尝试使用 LINQ 按创建日期获取目录中的文件列表

带有新 Observable 和 ng-template 的 Angular 4 异步管道不起作用

c# - 德国系统上的 Double.Parse 结果为逗号而不是小数点

c# - Web API 将自定义异常对象转换为基本异常

android - 带有 flatMapCompletable 的 RxJava 2 Observable 未完成

java - 我应该同步 notifyObservers 调用吗?