CancellationToken
If handler implementation does blocking, long operations, or puts thread on sleep, then it should periodically check query.CancellationToken to test if service or request has been cancelled.
[Order(-1_000_000_000)]
class DelayQuery : IHandlerAsync
{
public async Task HandleAsync<Request, Response>(IQuery<Request, Response> query) where Request : notnull
{
// Has cancel token
if (query.CancellationToken.CanBeCanceled)
{
await Task.Delay(100, query.CancellationToken);
}
// Does not have a cancel token
else
{
await Task.Delay(100);
}
}
}