如何在取消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。
您可以注册一个Action
,当令牌被取消时调用:
token.Register(() => { /*...*/ });