码迷,mamicode.com
首页 > Web开发 > 详细

.net 任务(Task)

时间:2016-04-16 21:13:37      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

1. Task (任务):

   很容易调用 ThreadPool.QueueUserWorkItem 实现异步操作,但是这个技术有许多

   .net 引入Task类型来使用任务。

   如下三种方式都是实现异步的方法:

  public static void Method()
        {
            ThreadPool.QueueUserWorkItem((o) => Console.WriteLine(""));
            //通过Start()来调度任务
            new Task(() => Console.WriteLine("")).Start();
            //通过Run方法 来调度任务
            Task.Run(() => Console.WriteLine(""));

        }

  a. 为了创建一个Task,需要调用构造器并传递一个Action 或 Action<Object> 委托。这个委托就是你想执行的代码操作。

  b. 如果调用Run 可以传递一个Action 或 Fun<Tresult> 委托。 两种区别在于 Aciton 无返回值, Fun 有返回值

 

 2. 等待 任务完成并获取结果:

 public static void Method2()
        {
            //创建一个Task
            Task<int> t = new Task<int>(n => Sum((int)n), 10);

            //启动任务
            t.Start();

            //等待任务完成
            t.Wait();
            //获取结果
            Console.WriteLine("Sum is:{0}", t.Result);
        }

        private static int Sum(int n)
        {
            int sum = 0;
            for (; n > 0; n--)
            {
                checked { sum += n; }
            }

            return sum;
        }

 

3. 取消任务:

 

.net 任务(Task)

标签:

原文地址:http://www.cnblogs.com/dragon-L/p/5399254.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!