C#异步编程(二):异步基础补充
2015-10-27 13:50
351 查看
这次来介绍一些用法:
await一批任务,不等候其它任务完成,直接执行后续的任务。
从打印出的结果可以看到,在等候1秒的方法执行完成后并没有等待其它方法的执行,而是直接执行后面的异步方法。
下面介绍一种使用匿名方法的写法
await一批任务,不等候其它任务完成,直接执行后续的任务。
class Program { static void Main(string[] args) { var taskA = DelayAndRerutnAsync(2); var taskB = DelayAndRerutnAsync(3); var taskC = DelayAndRerutnAsync(1); var tasks = new[] {taskA, taskB, taskC}; var processingTasks= (from t in tasks select AwaitAndProcessAsync(t)).ToArray(); Task.WhenAll(processingTasks); Console.Read(); } static async Task<int> DelayAndRerutnAsync(int val) { await Task.Delay(TimeSpan.FromSeconds(val)); Console.WriteLine("等候了{0}",val); return val; } static async Task AwaitAndProcessAsync(Task<int> task) { var result = await task; Console.WriteLine(result); } }
从打印出的结果可以看到,在等候1秒的方法执行完成后并没有等待其它方法的执行,而是直接执行后面的异步方法。
下面介绍一种使用匿名方法的写法
class Program { static void Main(string[] args) { var taskA = DelayAndRerutnAsync(2); var taskB = DelayAndRerutnAsync(3); var taskC = DelayAndRerutnAsync(1); var tasks = new[] {taskA, taskB, taskC}; var processingTasks = tasks.Select(async task => { var result = await task; Console.WriteLine(result); }); Task.WhenAll(processingTasks); Console.Read(); } static async Task<int> DelayAndRerutnAsync(int val) { await Task.Delay(TimeSpan.FromSeconds(val)); Console.WriteLine("等候了{0}",val); return val; } }
相关文章推荐
- c#基础2
- C# 实现设置系统环境变量设置
- C# 给PDF文件添加水印
- C# WinForm获取当前路径汇总
- C#最简单例子
- C# 通过GPS坐标,计算两点之间距离
- c#习题之3
- C#中Dictionary,Hashtable,List的比较及分析
- (原创)c#学习笔记06--函数05--函数的重载
- C#--属性详解
- c#习题之2
- C# 生成随机数
- 一个简单的C#加密解密类
- c#习题
- C#图片压缩裁剪处理
- C# 语言在函数参数列表中出现this关键词的作用
- 浅析C#数据类型转换的几种形式
- C# 对文本文件的几种读写方法总结
- c#写windows服务 小demo
- C#创建Windows Service(Windows 服务)基础教程