• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

CLRviaC#读书笔记3-5.netframework4.0新增类Task(一种很好的异步模型) ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Task 是在.net framework 4.0中提供的新功能

主要用于异步操作的控制

在很多时候他比Thread和ThreadPool提供更为强大的功能,并且更方便使用

 

1.demo

以下代码是使用Task的一个demo

代码
// Create a Task (it does not start running now)
Task<Int32> t = new Task<Int32>(n => Sum((Int32)n), 1000000000);
// You can start the task sometime later
t.Start();
// Optionally, you can explicitly wait for the task to complete
t.Wait(); // FYI: Overloads exist accepting timeout/CancellationToken
// You can get the result (the Result property internally calls Wait)
Console.WriteLine("The Sum is: " + t.Result); // An Int32 value

Sum是一个声明好的外部函数, 当然我们也可以使用lambda来替代它

这几句代码声明了一个Task 并且调用Start方法启动他,然后使用Wait方法等待这个异步任务的完成

 

 

 

2.Task的优势

  1.Task可以很方便的控制是使用线程池还是使用线程来执行(也许以后还会增加更多的执行模型)

  2.Task<T> 允许输入输出强类型的参数

  3.使用Task可以很方便的控制 例如:等待,取消 Task (个人觉得这个是最大的优势)

  4.可以很方便的处理到Task中发生的未处理的异常

  5.Task.ContinueWith方法可以很方便的安排Task之间的执行顺序(例如通过参数TaskCountinuationOptions参数来控制 在某任务A执行完成,取消或者其他特定情况下,任务B立刻启动接着执行,以下代码显示了等待不同情况的执行顺序) 

代码
Task<Int32> t = new Task<Int32>(n => Sum((Int32)n), 100000000);
t.Start();

t.ContinueWith(task
=> Console.WriteLine("The sum is: " + task.Result),
TaskContinuationOptions.OnlyOnRanToCompletion);
//only completion
t.ContinueWith(task => Console.WriteLine("Sum threw: " + task.Exception),
TaskContinuationOptions.OnlyOnFaulted);
//only exception
t.ContinueWith(task => Console.WriteLine("Sum was canceled"),
TaskContinuationOptions.OnlyOnCanceled);
//only cencel

 

 

   6.可以通过Task.Status 很方便的查询到一个Task当前的状态(包括 新建,等待,运行,异常等)

  7.可以自定义TaskScheduler,来控制Task的执行, 目前已经有很多成熟的Scheduler提供在网络上(例如 IOTaskScheduler OrderedTaskScheduler 等..)

    

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
【转】python中使用C类型的数组以及ctypes的用法发布时间:2022-07-13
下一篇:
C语言动态库简单开发发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap