小编Kid*_*ice的帖子

CancellationToken 阻塞线程执行

我正在尝试使用取消令牌从另一个线程中跳出循环:

using System;
using System.Threading;
using System.Threading.Tasks;

namespace CancellationTokenTest
{
    class Program
    {
        private static CancellationTokenSource token;

        static async Task Main(string[] args)
        {
            token = new CancellationTokenSource();
            var t1 = LongProcess1();

            for (int i = 0; i < 5; i++)
            {
                try
                {
                    await Task.Delay(2000, token.Token);
                    Console.WriteLine($"Main awaited {i}");
                }
                catch (OperationCanceledException)
                {
                    break;
                }
            }

            Console.WriteLine("Main loop completed");
            t1.Wait();
            Console.WriteLine("Application end");
        }

        static async Task LongProcess1()
        {
            for (int i = 0; i < 5; i++)
            {
                await Task.Delay(1000); …
Run Code Online (Sandbox Code Playgroud)

c# multithreading task-parallel-library async-await cancellation-token

2
推荐指数
1
解决办法
163
查看次数