Ich möchte einen Thread warten (blockieren) bis entweder eine Zeit verstrichen ist oder ein anderer Stream einen Wert pumpt, dachte ich folgendes könnte dies zu erreichen, aber es löst eine Ausnahme, weil der erste Strom leer ist,Wie warte ich auf einen Wert oder bis eine feste Zeit abgelaufen ist mit Reactive Extensions (Rx.Net)
// class level subject manipulated by another thread...
_updates = new Subject<Unit>();
...
// wait for up to 5 seconds before carrying on...
var result = Observable.Timer(DateTime.Now.AddSeconds(5))
.TakeUntil(_updates)
.Wait();
Wie kann ich die Fähigkeit erreichen bis zu 5 Sekunden oder bis der andere Strom pumpt Wert zu blockieren?
Ich weiß nicht, ob es darauf ankommt, sondern 'default (Unit) == == Unit.Default neue Unit() ', so 'Ergebnis' wird immer den gleichen Wert haben, der vorwärts geht. – Shlomo
@Shlomo nicht sicher, was du meinst. Wenn die Aktualisierungssequenz einen Wert erzeugt, wird der Wert dieser Wert sein, kein Standardwert. Auch wenn Einheit eine Klasse ist - Standard (Unit) ist Null. Vielleicht bedeutet OP eine bestimmte Einheit, der ich nicht bewusst bin, aber ich behandle Unit nur als willkürliche Klasse. – Evk
Er bezieht sich wahrscheinlich auf System.Reactive.Unit, eine Struktur, keine Klasse. Siehe http://introtorx.com/Content/v1.0.10621.0/04_CreatingObservableSequences.html#ObservableStart – Shlomo