Task 异步任务

与其他多线程相比,Task 可以 返回 异步执行后的结果。根据结果,我们来进一步编程

 

 

static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;
            //callMethod();
            Method4();
            Console.WriteLine("=================");
            Console.ReadKey();
        }

public static void Method4()
        {
            CancellationTokenSource cts = new CancellationTokenSource();
            //创建一个任务
            Task<int> task = new Task<int>(() =>
            {
                int sum = 0;
                Console.WriteLine("使用Task执行异步操作.");//------2
                for (int i = 0; i < 100; i++)
                {
                    Thread.Sleep(100);
                    sum += i;
                }
                return sum;
            },cts.Token);
            //启动任务,并安排到当前任务队列线程中执行任务(System.Threading.Tasks.TaskScheduler)
            task.Start();
            Console.WriteLine("主线程执行其他处理"); //----1
            //任务完成时执行处理。
            Task cwt = task.ContinueWith(t =>
            {
                Thread.Sleep(1000);
                Console.WriteLine("任务完成后的执行结果:{0}", t.Result.ToString());//------4
            });
            Console.WriteLine("主线程执行其他处理2");
            //if(task.Wait(5000))
            //{
            //    Console.WriteLine("task執行超時---------");
            //    cts.Cancel();
            //}
            //task.Wait(); // 會阻塞主線程
            Console.WriteLine("task执行结束");//-----3
            //cwt.Wait();  // 阻塞当前线程,直到回调执行完毕
            Console.WriteLine("task回调执行结束");//-------5
            Console.WriteLine("主线程执行其他处理3");
        }

  

posted @ 2021-09-08 08:23  zq爱生活爱代码  阅读(88)  评论(0编辑  收藏  举报