Cancellation Token Provider

A CancellationToken enables cooperative cancellation between threads, thread pool work items, or Task objects. To handle the possible cancellation of the operation, ABP Framework provides ICancellationTokenProvider to obtain the CancellationToken itself from the source.

To get more information about CancellationToken, see Microsoft Documentation.

ICancellationTokenProvider

ICancellationTokenProvider is an abstraction to provide CancellationToken for different scenarios.

Generally, you should pass the CancellationToken as a parameter for your method to use it. With the ICancellationTokenProvider you don't need to pass CancellationToken for every method. ICancellationTokenProvider can be injected with the dependency injection and provides the token from it's source.

Example:

using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Threading;

namespace MyProject
{
    public class MyService : ITransientDependency
    {
        private readonly ICancellationTokenProvider _cancellationTokenProvider;

        public MyService(ICancellationTokenProvider cancellationTokenProvider)
        {
            _cancellationTokenProvider = cancellationTokenProvider;
        }

        public async Task DoItAsync()
        {
            while (_cancellationTokenProvider.Token.IsCancellationRequested == false)
            {
                // ...
            }
        }
    }
}

Built-in providers

  • NullCancellationTokenProvider

    The NullCancellationTokenProvider is a built in provider and it supply always CancellationToken.None.

  • HttpContextCancellationTokenProvider

    The HttpContextCancellationTokenProvider is a built in default provider for ABP Web applications. It simply provides a CancellationToken that is source of the web request from the HttpContext.

Implementing the ICancellationTokenProvider

You can easily create your CancellationTokenProvider by creating a class that implements the ICancellationTokenProvider interface, as shown below:

using System.Threading;

namespace AbpDemo
{
    public class MyCancellationTokenProvider : ICancellationTokenProvider
    {
        public CancellationToken Token { get; }

        private MyCancellationTokenProvider()
        {

        }
    }
}

Contributors


Last updated: April 09, 2021 Edit this page on GitHub

Was this page helpful?

Please make a selection.

To help us improve, please share your reason for the negative feedback in the field below.

Please enter a note.

Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

In this document
Community Talks

Building Modular Monolith Applications Using .NET and ABP Framework

17 Oct, 17:00
Online
Watch the Event
Mastering ABP Framework Book
Mastering ABP Framework

This book will help you gain a complete understanding of the framework and modern web application development techniques.

Learn More