C# 基于任务的异步模式

0b47c22361b14ff080d57dd69fd0a42e.png

在 .NET Framework 4.5 中,更新了 WebClient 类,还提供了基于任务的异步模式(TAP)。该模式定义了一个带有 “Async” 后缀的方法,并返回一个 Task 类型。由于 WebClient 类已经提供了一个带 Async 后缀的方法来实现基于任务的异步模式,因此新方法名为 DownloadStringTaskAsync。

DownloadStringTaskAsync 方法声明为返回 Task<string>。但是,不需要声明一个 Task<string> 类型的变量来设置 DownloadStringTaskAsync 方法返回的结果。只要声明一个 String 类型的变量,并使用 await 关键字。await 关键字会解除线程(这里是UI 线程)的阻塞,完成其他任务。当 DownloadStringTaskAsync 方法完成其后台处理后,UI 线程就可以继续,从后台任务中获得结果,赋值给字符串变量 resp。然后执行await 关键字后面的代码:

private static async Task TaskBasedAsyncPatternAsync() 
{
  Console.WriteLine(nameof(TaskBasedAsyncPatternAsync)); 
  using (var client = new WebClient())
  {
    string content = await client.DownloadstringTaskAsync(url); 
    Console.WriteLine(content.Substring(0,100)); 
    Console.WriteLine();
  }
}

 注意

async 关键字创建了一个状态机,类似于 yield return 语句。

现在,代码就简单多了。没有阻塞,也不需要切换回 UI 线程,这些都是自动实现的。代码顺序也和惯用的同步编程一样。

注意

更现代的 HTTP 客户端是用类 HttpClient 实现的。这个类提供的异步方法支持基于任务的异步模式。

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全 

往期推荐

·  C# 数据流

·  C# 类型系统

·  C# 面向对象的编程

·  C# 执行 SQL 语句

·  C# 连接数据库

·  C# 迭代器

dd9c19ba864125bfefa7aa66906551a2.png

Love life,love yourself

关注小编不迷路呦~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值