我有一些类似于
observable.Select(x => Observable.FromAsync(token => Task.Run(() =>
{
// ... do some work ...
token.ThrowIfCancellationRequested();
// ... do some more work ...
return 7 * x;
}, token)))
.Switch()
.Subscribe(x =>
{
// Whatever
});
内部发生的工作Task
可能需要一段时间,所以如果Switch
已经转移到另一个任务(因为到达了一个新值observable
),我想中止这项工作。
呼吁ThrowIfCancellationRequested()
做正确的事吗?即,一旦IObservable
返回 fromFromAsync
已被处理(并取消令牌),我OperationCanceledException
会被忽略 - 还是会在其他地方引起问题?
我已经在一个测试应用程序中尝试过了,它似乎工作正常 - 但这并不意味着它是正确的:)