public async Task GracefulShutdown()
{
var tokenSource = new CancellationTokenSource();
tokenSource.CancelAfter(TimeSpan.FromSeconds(5));
var token = tokenSource.Token;
var cancelledTask = Task.Run(async () =>
{
await Task.Delay(TimeSpan.FromMinutes(1), token).IgnoreCancellation();
});
#region Output
cancelledTask.Status.ToString().Output();
#endregion
try
{
await cancelledTask;
}
catch (OperationCanceledException)
{
#region Output
"Should not throw when awaited".Output();
cancelledTask.Status.ToString().Output();
#endregion
}
#region Output
"Done".Output();
#endregion
}