![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
task
White_Hacker
这个作者很懒,什么都没留下…
展开
-
【C#】43. TPL基础——Task初步
从这篇文章开始,我想直接进入关于Task的一些内容,有时间再回顾Threadpool的相关内容。我一开始接触Task就觉得他和Thread很像,都是开新的线程。但是两者有很多区别,其中比较明显的是:Task创建的是线程池任务,而Thread默认创建的是前台任务。 同Thread一样,Task可以使用lambda表达式来构造action,作为Task的构造函数参数。如下:1原创 2016-12-11 20:56:10 · 2757 阅读 · 3 评论 -
【C#】44. Task<T> 根据带返回值的函数构造Task
上篇中,我们看了不带参数值和返回值的函数(Action)构造Task的方法,本篇中我们想Thread一样,看看如何给Task传参和返回值。首先定义int TaskMethod(String)函数,该函数以String作为参数,返回Int类型结果:static int TaskMethod(string name){Console.WriteLine("Task {0} 运行在线程id为原创 2016-12-11 21:23:12 · 37940 阅读 · 1 评论 -
【C#】45. Task ContinueWith 后续操作
本章内容其实挺重要的,但是现在我工作中还没怎么遇到,应该是我还没想到的关系吧~ContinueWith是Task根据其自身状况,决定后续应该作何操作。也就是说,在运行完task后,会执行task.continuewith(XX)中的XX语句,但是是否执行、如何执行等需要看task的运行情况。static int TaskMethod(string name, int seconds)原创 2016-12-11 22:23:08 · 23421 阅读 · 3 评论 -
【C#】46. 使用CancellationTokenSource 取消 Task
本篇的内容也很重要,因为涉及到了日常经常会碰到的取消任务操作。从我个人了解到的情况,基本上大家都采用CancellationTokenSource方法来取消任务,因此这里就举几个简单的例子。例子依然是来自于《C#多线程编程实战》。private static int TaskMethod(string name, int seconds, CancellationToken token)原创 2016-12-12 10:03:52 · 18874 阅读 · 0 评论 -
【C#】47. Task 的异常处理
就像在讨论线程的时候我们说过,要在线程调用的函数里面做try catch处理,如果在其他线程中使用try catch是无法正常捕获异常。Task也一样,基本原理就是一个线程没办法捕获另一个线程的异常。static int TaskMethod(string name, int seconds){Console.WriteLine("Task {0} 运行在线程 {1} 上。是否是线程池线程原创 2016-12-12 10:34:49 · 9363 阅读 · 0 评论 -
【C#】48. Task WhenAll、WhenAny 创建任务的任务
Task中有几个非常方便的并行运行任务的方式,比如WhenAll(当所有Task都运行完毕RanToCompletion)、WhenAny(只要有一个Task运行完毕)等等。本篇就来介绍一下WhenAll和WhenAny。static int TaskMethod(string name, int seconds){Console.WriteLine("Task {0} 运行在线程 {1}原创 2016-12-12 11:08:33 · 11784 阅读 · 0 评论 -
【C#】49. async, await 基础
这篇文章主要介绍一下C# 5.0语法中的新组合:async 和 await。我这里主要会写一些基本的注意要点,但是不会过于仔细。首先,必须要说明的是async和await是一对,要使用await关键字,那么函数前必须要有async前缀;这对语法糖不能使用在catch、finally、lock、unsafe代码中;且函数参数不能有out或者ref修饰;异步函数必须返回Task或者Task类型。原创 2016-12-12 15:16:23 · 1979 阅读 · 0 评论 -
【C#】50.使用await操作连续的异步任务
本篇主要说明一下使用await处理连续异步任务后,程序的条理会变得较为清晰。async static Task GetInfoAsync(string name){Console.WriteLine("Task {0} started!", name);await Task.Delay(2000);if(name == "Async 2")throw new Exceptio原创 2016-12-12 21:13:55 · 3609 阅读 · 0 评论 -
【C#】62. 异步读写文件的几种方法: Task.Factory.FromAsync,WriteAsync
一、这里主要说明2种异步写入文件的方法:1)异步编程模型API转为Task——使用Task.Factory.FromAsync方法2)对于StreamWriter使用WriteAsync方法请记得对stream对象使用FileOptions.Asynchronous选项!首先来看一下准备函数:CreateFileContent是用来随机生成要写入的内容(字符串形式);转载 2016-12-13 14:38:23 · 10250 阅读 · 1 评论