0
我有類似是否正確扔OperationCanceledException內Observable.FromAsync
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()
是否正確?即一旦從FromAsync
返回IObservable
已被處置(並取消令牌),我的OperationCanceledException
將被忽略 - 或者它會導致其他地方的問題?
我在一個測試應用程序嘗試了這一點,似乎就ok了工作 - 但是,這並不意味着它是正確的:)