static async Task DoWorkAsync(CommandExecutionController controller, CancellationToken cancellationToken) { try { for (var i = 0; i < 100; i++) { controller.ReportProgress(i / 100f); await Task.Delay(TimeSpan.FromSeconds(0.1), cancellationToken); } controller.DisableCancelCommand(); } finally { await Task.Delay(TimeSpan.FromSeconds(2)); } }
static void DoWork(CommandExecutionController controller, CancellationToken cancellationToken) { try { for (var i = 0; i < 100; i++) { cancellationToken.ThrowIfCancellationRequested(); controller.ReportProgress(i / 100f); DoEvents(); Thread.Sleep(TimeSpan.FromSeconds(0.1)); } controller.DisableCancelCommand(); } finally { DoEvents(); Thread.Sleep(TimeSpan.FromSeconds(2)); } }