有沒有更好的方式來編寫下面的代碼以實現post主題中陳述的內容?取消可觀察訂閱並等待觀察者完成
我發現下面的代碼太複雜,太繁瑣了,使用額外Subject<long>
,並且不容易創建一個通用的解決方案,除非您在每個observable中進行硬編碼。
var subject = new Subject<long>();
var cts = new CancellationTokenSource();
var observable = Observable.Interval(TimeSpan.FromSeconds(2));
var disposable = observable.Do(l => {
{
Console.WriteLine($"Start {l}-{DateTime.Now}");
Thread.Sleep(2000);
Console.WriteLine($"Stop {l}-{DateTime.Now}");
subject.OnNext(l);
}
}).Subscribe();
cts.Token.Register(disposable.Dispose);
Thread.Sleep(5000);
subject.Subscribe();
cts.Cancel();
subject.FirstAsync().Wait();
Console.WriteLine("Finish");
我完全同意,我已經發現它我自己,但你應得的給予好評 –