7

给定一个 CancellationToken,我想在取消 CancellationToken 时对表示异步操作的对象调用“取消”方法。这可能吗?

背景:我正在通过以下方式(或多或少)与代表异步操作的 API 交互:

class AsyncOp
{
    void Start(Action callback);//returns 'immediately', while beginning an async op. Callback is called when the operation completes.
    void Cancel();//aborts async operation and calls callback
}

我可以很容易地将它包装在一个方法中Task DoAsyncOp(),但我想支持取消,例如Task DoAsyncOp(CancellationToken cancellationToken). 就我而言,当取消 CancellationToken 时,请在 AsyncOp 对象上调用 Cancel。

4

1 回答 1

13

您可以注册一个Action在取消令牌时调用:

token.Register(() => { /*...*/ });
于 2014-05-07T12:14:41.853 回答