原文地址:http://www.cnblogs.com/HJL-Blog/p/4432632.html

所谓的异步编程是利用CPU空闲时间和多核的特性,它所返回的Task或Task<TResult>是对await的一个承诺,当任务执行完毕后返回一个结果给接收者

  • 方法签名包含一个 Async 或 async 修饰符。

  • 按照约定,异步方法的名称以“Async”后缀结尾。

  • 返回类型为下列类型之一:

    • 如果你的方法有操作数为 TResult 类型的返回语句,则为 Task<TResult>

    • 如果你的方法没有返回语句或具有没有操作数的返回语句,则为 Task

    • 如果你编写的是异步事件处理程序,则为 Void(Visual Basic 中为 Sub)。

    有关详细信息,请参见本主题后面的“返回类型和参数”。

  • 方法通常包含至少一个 await 表达式,该表达式标记一个点,在该点上,直到等待的异步操作完成方法才能继续。 同时,将方法挂起,并且控件返回到方法的调用方。(这里所谓的挂起就是上文所提到的承诺,异步方法承诺会给调用方一个结果)

         static void Main(string[] args)
{
Console.WriteLine("主方法开始");
ExeAsync();
Console.WriteLine("主方法结束"); Console.ReadKey();
}
/// <summary>
/// 需要去执行耗时的异步方法
/// </summary>
static async void ExeAsync()
{
Console.WriteLine("异步开始...");
//等待异步方法执行完后,才继续执行下一步,
//但是这里会返回给调用者继续执行主线程方法
int res = await GoAsync();
Console.WriteLine("异步结束...res: " + res);
}
/// <summary>
/// 异步耗时方法
/// </summary>
/// <returns></returns>
static async Task<int> GoAsync()
{
for (int i = ; i < ; i++)
{
//模拟耗时操作
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
Console.WriteLine(DateTime.Now.Millisecond + " 异步 " + (await getStringTask).Length);
}
return ;
}

最新文章

  1. no identity found Command /usr/bin/codesign failed with exit code 1 报错解决方法
  2. Appium python API 总结
  3. WebLogic 8.1 部署问题记录
  4. 【Redis】配置redis主从复制
  5. Kill 所有MySQL进程
  6. Android中的一些基础知识(二)
  7. JQuery.Ajax + 跨域 (crossDomain) + POST + JSON + WCF RESTful, 5大陷阱和解决方案
  8. 福利 c++ 标准头文件大全
  9. Markdown学习笔记(一) 基本的Markdown标签
  10. Hello——Java10新特性,请了解一下
  11. mysql的left jion:就是left outer join(right join同理)
  12. grep sed awk 3个Linux中对文件内容操作的命令
  13. 网络编程-Mysql-1、数据库的启动关闭,创建数据库,表等基本操作
  14. 4th week——grid-layout
  15. XXX系统业务建模
  16. c++ 接口类
  17. MySQL5.7Gtid主从复制总是遇到日志被清等出现无法正常主从复制
  18. 图论-桥/割点/双连通分量/缩点/LCA
  19. nginx-限制后端服务器连接数
  20. rails 过滤掉所有的html标签 strip_tags

热门文章

  1. tyvj1098 任务安排
  2. R语言-Kindle特价书爬榜示例 &amp; 输出HTML小技巧
  3. PHP求余函数fmod()
  4. poj 1192
  5. springmvc js/css路径问题
  6. opencv二值化处理
  7. 无需activity获得屏幕尺寸
  8. 常用mysql语句
  9. espcms简约版的表单,提示页,搜索列表页
  10. AngularJS 初用总结