public static Task Run(ExampleAsyncCancelEvent evt, CancellationToken ct) { return(Task.Run( () => { for (int i = 0; i < evt.Seconds; i++) { Thread.Sleep(1000); if (ct.IsCancellationRequested) { ct.ThrowIfCancellationRequested(); break; } } }, ct)); }
public async Task <MessageResponse> PublishDomainCancelEventAsync([FromBody] MessageCancelInfo info) { if (info.CancelationInSeconds == 0) { info.CancelationInSeconds += info.DelayInSeconds + 1000; } Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); var cts = new CancellationTokenSource(); cts.CancelAfter(info.CancelationInSeconds * 1000); var evt = new ExampleAsyncCancelEvent(info); await _messagingSrv.PublishAsync(evt, cts.Token); stopwatch.Stop(); return(new MessageResponse { Elapsed = stopwatch.Elapsed }); }
public Task OnEventAsync(ExampleAsyncCancelEvent evt, CancellationToken ct) { return(Worker.Run(evt, ct)); }