イベントからObservable
を作成するためにこのメソッドを作成しました。私は、ファイルをダウンロードし、プログレスバーを更新しようとしている:oncompletedとonNextに達しません
private void BuildObservables(WebClient webClient)
{
Observable.FromEventPattern<AsyncCompletedEventHandler, AsyncCompletedEventArgs>(h => webClient.DownloadFileCompleted += h, h => webClient.DownloadFileCompleted -= h)
.Select(ep => ep.EventArgs)
.Subscribe(
_ =>
{
//stuff code
},
_ => this.WizardViewModel.PageCompleted() <<<<< (*) NOT REACHED
);
Observable.FromEventPattern<DownloadProgressChangedEventHandler, DownloadProgressChangedEventArgs>(h => webClient.DownloadProgressChanged += h, h => webClient.DownloadProgressChanged -= h)
.Select(ep => ep.EventArgs)
.Subscribe(
a =>
{
<<<<< (*) NOT REACHED
this.progressEdit.Position = a.ProgressPercentage;
progressEdit.Update();
}
);
}
私はソース(onCompleted
とonNext
)にマーク(*)
ポイントに達していないことを上向きにしています。
アイデア?
'.Take(1)'は 'OnCompleted'を起動させるはずです。 – Enigmativity
それは本当です。基本的な.NETイベントには「完了」と同等の表現がないという事実は変わりませんが、正確に1つのイベントを探していることがわかっている場合は、観測可能なチェーンのリソースをクリーンアップするのに役立ちます。 –