0

次のようなコードがあります

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無視されますか? それとも別の場所で問題が発生しますか?

テストアプリでこれを試してみましたが、うまくいくようです - しかし、それが正しいというわけではありません:)

4

1 に答える 1