zoukankan      html  css  js  c++  java
  • .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);

  • 相关阅读:
    第四周JSP作业
    jsp第二次作业
    3.4软件管理与测试作业
    jsp3月3日作业
    课后listview作业
    安卓sql
    activity带数据跳转
    answers
    阿里云ESC无法使用python发送邮件的问题
    Ubuntu 更改时区
  • 原文地址:https://www.cnblogs.com/dragon-L/p/5399254.html
Copyright © 2011-2022 走看看