3

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

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;});
4

1 回答 1

4

你应该看看finally 扩展方法,它会做你想要的!

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));

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

于 2011-11-02T14:39:35.030 回答