如何使用CancellationToken支持将IObservable <T>转换为RX中的列表

DeC*_*Caf 3 .net system.reactive .net-4.5 cancellation-token

我有一个方法返回IObservable<long>我从async方法调用的方法.我想将此转换为正常List<long>,但如果我CancellationToken发出信号,则取消该操作.

我想做这样的事情:

List<long> result = await Foo().ToList(myCancellationToken);
Run Code Online (Sandbox Code Playgroud)

完成此任务的正确(和最简单)方法是什么?返回an 的ToList()扩展方法并不带参数.IObservable<T>IObservable<List<T>>CancellationToken

Bra*_*don 6

var list = await Foo().ToList().ToTask(cancellationToken);
Run Code Online (Sandbox Code Playgroud)

如果令牌被取消,这具有立即取消的优点(另一个答案将在下次Foo可观察量产生值时取消).