投稿した件名に記載されている内容を達成するために、以下のコードを書くより良い方法はありますか?Observable SubscriptionをキャンセルしてObserverが終了するのを待つ
Subject<long>
を使用すると、次のコードが複雑すぎたり、冗長すぎたりします。一般的なソリューションを作成することは容易ではありません。
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");
、私はすでに、それは私の自己を発見するが、あなたはupvoteに値します –