分享

C# Task同步用法

 Jcstone 2018-01-02
 
 class Program
  { 
        static void Main(string[] args)
        { 
            //Task t1 = new Task(MyMethodA);
            //Task t2 = new Task(MyMethodB);
            ////带返回值
            //Task<string> t3 = new Task<string>(MyMethodC);
            ////带参数和返回值
            //Task<string> t4 = new Task<string>(() => MyMethodD("jcstone")); 

            //t3.Start();
            //t4.Start();
            //t1.Start();
            //t2.Start();

            //t1.Wait();
            //t2.Wait();
            //t3.Wait();
            //t4.Wait();

            Task t1 = Task.Factory.StartNew(delegate { MyMethodA(); });
            Task t2 = Task.Factory.StartNew(delegate { MyMethodB(); });
            Task<string> t3 = Task<string>.Factory.StartNew(() => MyMethodC());
            Task<string> t4 = Task<string>.Factory.StartNew(() => MyMethodD("jcstone"));
            Task.WaitAll(t4, t3, t2, t1);

            Console.WriteLine(t3.Result);
            Console.WriteLine(t4.Result);
            Console.WriteLine("主线程运行结束!");
            Console.ReadKey(true);//任意键结束

        }

        static void MyMethodA()
        {
            for (int i = 100; i < 1000; i += 100)
            {
                Console.WriteLine("A  " + i.ToString());
                Thread.Sleep(710);
            }
        }
        static void MyMethodB()
        {
            for (int i = 1; i < 15; i++)
            {
                Console.WriteLine("B  " + i.ToString());
                Thread.Sleep(550);
            }
        }
        static string MyMethodC()
        {
            Thread.Sleep(750);
            return "C  This is MyMethodC";
        }
        static string MyMethodD(string name)
        {
            Thread.Sleep(1750);
            return "D  Hello," + name + "!";
        }
    }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多