如何在取消CancellationToken时运行代码

本文关键字:运行 代码 CancellationToken 取消 | 更新日期: 2023-09-27 18:02:21

给定一个CancellationToken,我想在一个对象上调用一个'cancel'方法,该对象在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。

如何在取消CancellationToken时运行代码

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

token.Register(() => { /*...*/ });