次のようなコードがあります
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
無視されますか? それとも別の場所で問題が発生しますか?
テストアプリでこれを試してみましたが、うまくいくようです - しかし、それが正しいというわけではありません:)