C# 异步的简单用法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ConsoleApp3
{
    class Class3
    {
        CancellationTokenSource source = new CancellationTokenSource();
        internal void Run()
        {
            
            CancellationToken token = source.Token;
            TaskFactory factory = new TaskFactory(token);
            //创建一个 异步
            Task<string> task = factory.StartNew(TestTaskEvent1, token);
            // task.Start();
            Thread.Sleep(15000);
            //不取消 此函数会一直循环
            source.Cancel();
            //Console.WriteLine(task.Result);
            Console.WriteLine("aaaer");
            source.Dispose();
        }

        private string TestTaskEvent1(object obj)
        {
            while (!source.IsCancellationRequested)
            {
                Thread.Sleep(100);
            }
            //for (int i = 1; i <= 3; ++i)
            //{
            //    Thread.Sleep(1000);

            //}

            Console.WriteLine("event over");
            return "a";
        }

        internal void Run1()
        {
            CancellationTokenSource source = new CancellationTokenSource();
            CancellationToken token = source.Token;

            Task<string> task = new Task<string>(TestTaskEvent, source, token);
            task.Start();
            Thread.Sleep(1500);
            source.Cancel();
            Console.WriteLine(task.Result);
            //此处会等待Result执行完毕后再执行
            Console.WriteLine("aaa");
        }
        string TestTaskEvent(object obj)
        {
           
            for (int i = 1; i <= 3; ++i)
            {
                Thread.Sleep(1000);
     
            }

            return "a";
        }
    }
}

  

原文地址:https://www.cnblogs.com/z45281625/p/11190226.html