Program.cs 932 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4. CancellationTokenSource cts = new CancellationTokenSource();
  5. CancellationToken token = cts.Token;
  6. FactorialAsync(6, token);
  7. Thread.Sleep(3000);
  8. cts.Cancel();
  9. Console.Read();
  10. static void Factorial(int n, CancellationToken token)
  11. {
  12. int result = 1;
  13. for (int i = 1; i <= n; i++)
  14. {
  15. if (token.IsCancellationRequested)
  16. {
  17. Console.WriteLine(
  18. "Операция прервана токеном");
  19. return;
  20. }
  21. result *= i;
  22. Console.WriteLine(
  23. $"Факториал числа {i} равен {result}");
  24. Thread.Sleep(1000);
  25. }
  26. }
  27. // определение асинхронного метода
  28. static async void FactorialAsync(int n, CancellationToken token)
  29. {
  30. if(token.IsCancellationRequested)
  31. return;
  32. await Task.Run(()=>Factorial(n, token));
  33. }