Umgang mit Ausnahmen in Iobservable Pipeline und ermöglicht die Pipeline fortC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Umgang mit Ausnahmen in Iobservable Pipeline und ermöglicht die Pipeline fort

Post by Anonymous »

Ich schreibe eine UI -Anwendung mit ReactiveUi für die Ansichtsmodelllogik. Ich versuche, auf eine Änderung des Zustands zu reagieren, indem ich den neuen Staat in eine asynchronisierende Methode sende und dann das Ergebnis zu einer Beobachtung von PropertyHelper speichere. Die Async -Methode kann Ausnahmen ausführen, die ich durchführen muss, indem ich einen Alarm an den Benutzer anzeigen muss. Die asynchronisierte Methode wartet einfach (asynchron) für eine Sekunde und macht dann eine Ausnahme.

Code: Select all

public partial class MyViewModel : ReactiveObject
{
public MyViewModel()
{
this.WhenAnyValue(m => m.SelectedItem)
.Select(item => Observable.FromAsync(token => DoWorkAsync(item, token)))
.Switch()
.ToProperty(this, m => m.Result, out this._resultHelper);

this._resultHelper.ThrownExceptions
.Subscribe(ex => {
Debug.WriteLine($"{ex.GetType().Name}: {ex.Message}");
});
}

[Reactive]
public partial string? SelectedItem { get; set; }

[ObservableAsProperty]
public partial string? Result { get; }

private async Task DoWorkAsync(string? input, CancellationToken token)
{
await Task.Delay(1000);
throw new ApplicationException("Testing!");
}
}
Wenn das erste Mal ausgewählt wurde. Die Pipeline hört jedoch auf, nach diesem Punkt weitere Elemente zu emittieren, sodass zukünftige Änderungen an SelectedItem absolut nichts tun. Aus den Forschungen, die ich alleine durchgeführt habe, scheint die Ausnahme zu bewirken, dass OnError aufgerufen werden soll, was Abonnements entsetzt. Ich möchte jedoch nicht, dass dies der Fall ist ... Ich möchte Ausnahmen "zur Seite" "ziehen" und die Pipeline für zukünftige Änderungen intakt halten. Als Bonus möchte ich nicht jedes Mal, wenn ich dieses Szenario begegne, eine Menge dunkeles Kesselplatten haben muss. ein Versuch/Fang, aber das scheint nicht so gut zu dem "reaktiven" Paradigma)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post