【发布时间】:2017-08-13 22:59:13
【问题描述】:
有没有更好的方法来编写下面的代码来实现帖子主题中所说的内容?
我发现使用额外的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");
【问题讨论】:
标签: system.reactive