.net 任务(Task)

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(""));
                Task.Factory.StartNew(() => 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. 取消任务:

 CancellationTokenSource

 

Parallel 静态 For,ForEach和Invoke.

 Task.Run(async () => await Result);

posted @ 2016-04-16 20:26  dragon.net  阅读(1062)  评论(0编辑  收藏  举报