.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);

转载于:https://www.cnblogs.com/dragon-L/p/5399254.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值