• http异步请求的一种调用示例


    在异步编程中,经常会调用已经写好的异步方法。这时会有一个需求:根据异步方法的返回值,做一些别的操作。

    1.0 重新开启一个异步方法,在这个新的异步方法内部,调用需要请求的异步方法。示例:

     1 static void Main(string[] args)
     2         {
     3             Console.WriteLine("--------------程序运行开始-----------");
     4 
     5             PostAsync();
     6 
     7             Console.WriteLine("--------------程序运行结束-----------");
     8 
     9             Console.Read();
    10         }
    11 
    12         //异步http请求
    13         public async static void PostAsync()
    14         {
    15             HttpWebResponse httpRes = (HttpWebResponse)await PostData();
    16 
    17             if (httpRes.StatusCode == HttpStatusCode.OK)
    18             {
    19                 var text = new StreamReader(httpRes.GetResponseStream()).ReadToEnd();
    20 
    21                 Console.WriteLine("web请求完成,在这里可以处理完成后的业务!");
    22             }
    23         }
    24         /// <summary>
    25         /// 这个方法之所以单独写出来是因为:通常开发的时候我们不会单独的写一个web请求,而是会对请求进一步封装,比如请求地址,请求方法
    26         /// </summary>
    27         /// <returns></returns>
    28         public async static Task<WebResponse> PostData()
    29         {
    30             string url = "http://www.baidu.com";
    31 
    32             var httpReq = (HttpWebRequest)HttpWebRequest.Create(new Uri(url));
    33 
    34             return await httpReq.GetResponseAsync();
    35         }

    1.1 运行结果:

    1.2 很明显,这种调用方式才发挥了异步方法的作用。即不会阻塞当前线程的执行。

  • 相关阅读:
    [BJOI2015]树的同构 && 树哈希教程
    「HNOI2014」世界树
    CF613D Kingdom and its Cities
    「HEOI2014」大工程
    虚树教程
    [SDOI2011]消耗战
    CF1216E Numerical Sequence
    vim8.1安装
    luoguP5024 保卫王国
    动态DP教程
  • 原文地址:https://www.cnblogs.com/renjing/p/async.html
Copyright © 2020-2023  润新知