Question

Given a CancellationToken, I want to call a 'cancel' method on an object that represents an asynchronous operation when the CancellationToken is cancelled. Is this possible?

Background: I'm interfacing with an API that represents an async op the following way (more or less):

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
}

I can wrap this in a method Task DoAsyncOp() easily enough, but I want to support cancellation, eg Task DoAsyncOp(CancellationToken cancellationToken). In my case, when the CancellationToken is cancelled, call Cancel on the AsyncOp object.

Was it helpful?

Solution

You can register an Action to be invoked when the token is canceled:

token.Register(() => { /*...*/ });
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top