Я создал этот метод, чтобы создать 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
) не достигается.
Любые идеи?
A. .Take (1) 'должен вызывать« OnCompleted ». – Enigmativity
Это правда. Это не меняет того факта, что базовое событие .NET не имеет эквивалентного представления «завершения», но оно, безусловно, может быть полезно для очистки ресурсов в наблюдаемых цепочках, когда вы знаете, что ищете ровно одно событие. –