异步编程的.NET历史

本文介绍了.NET Framework从1.0版本至今的异步编程模式演变,包括异步模式、基于事件的异步模式和基于任务的异步模式(TAP)。文章通过示例代码展示了WebClient和WebRequest类在不同异步模式下的使用,强调了在UI应用程序中处理异步操作的重要性,并指出.NET Framework 4.5引入的async和await关键字如何简化异步编程。
摘要由CSDN通过智能技术生成

在学习新的async和await关键字之前,先看看.NET Framework的异步模式。从.NET Framework 1.0 开始就提供了异步特性,而且.NET Framework的许多类都实现了一个或这多个异步模式。

下面开始执行同步网络调用,然后介绍不同的异步模式:

  • 异步模式
  • 基于事件的异步模式
  • 基于任务的异步模式

异步模式是处理异步特性的第一种方式,它不仅可以使用几个API,还可以使用基本功能(如委托类型)。

因为在Windows Forms和WPF中,用异步模式更新界面非常的复杂,所以.NET Framework 2.0推出了基于事件的异步模式。在这种模式中,事件处理程序是被拥有同步上下文的线程调用,所以更新界面很容易用这种模式处理。在此之前,这种模式也称为异步组件模式。

在.NET Framework 4.5中,推出了另外一种方式来实现异步编程:基于任务的异步模式(TAP)。这种模式是基于Task类型,并通过async和await关键字使用编译器功能。

HistorySample的示例代码至少使用了C# 7.1和以下名称空间:

System

System.IO

System.Net

System.Threading.Tasks

发出HTTP请求的示例应用程序是System.Net API提供同步和异步API中的一个好例子。

同步调用

下面从使用WebClient类的同步版本开始。这个类提供了几个同步的API,如DownloadString、DownloadFile和DownloadData。在下面的代码片段中,DownloadString发出一个HTTP请求并在字符串内容中写入响应,该字符串的子字符串被写入控制台:

        private const string url = "http://www.cninnovation.com";
        private static void SynchronizedAPI()
        {
            System.Console.WriteLine(nameof(SynchronizedAPI));
            using(var client = new WebClient())
            {
                string content = client.DownloadString(url);
                System.Console.WriteLine(content.Substring(0,1000));
            }
        }

输出如下:

SynchronizedAPI
<!-- basing on ~/assan-v2.5/templates/main
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值