有没有更好的方式来编写下面的代码以实现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");
我完全同意,我已经发现它我自己,但你应得的给予好评 –