3

IObservableを使用して、バックグラウンドでロードを実行しています。これがいつロードを終了するかを指定したいと思います。データリトリバーが利回りを返すたびにではなく、これを1回だけ行うにはどうすればよいですか?どうすればよいですか?

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 に答える