软件编程
位置:首页>> 软件编程>> C#编程>> C#实现异步GET的方法

C#实现异步GET的方法

作者:优雅先生  发布时间:2022-08-17 11:52:55 

标签:C#,异步

本文实例讲述了C#实现异步GET的方法。分享给大家供大家参考。具体实现方法如下:


using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace WebClientAsynProject
{
 public class Program
 {
   #region HttpWebRequest异步GET
   public static void AsyncGetWithWebRequest(string url)
   {
     var request = (HttpWebRequest) WebRequest.Create(new Uri(url));
     request.BeginGetResponse(new AsyncCallback(ReadCallback), request);
   }
   private static void ReadCallback(IAsyncResult asynchronousResult)
   {
     var request = (HttpWebRequest) asynchronousResult.AsyncState;
     var response = (HttpWebResponse) request.EndGetResponse(asynchronousResult);
     using (var streamReader = new StreamReader(response.GetResponseStream()))
     {
       var resultString = streamReader.ReadToEnd();
       Console.WriteLine(resultString);
     }
   }
   #endregion
   #region WebClient异步GET
   public static void AsyncGetWithWebClient(string url)
   {
     var webClient = new WebClient();
     webClient.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
     webClient.DownloadStringAsync(new Uri(url));
   }
   private static void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
   {
     //Console.WriteLine(e.Cancelled);
     Console.WriteLine(e.Error != null ? "WebClient异步GET发生错误!" : e.Result);
   }
   #endregion
   #region WebClient的OpenReadAsync测试
   public static void TestGetWebResponseAsync(string url)
   {
     var webClient = new WebClient();
     webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
     webClient.OpenReadAsync(new Uri(url));
   }
   private static void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
   {
     if(e.Error == null)
     {
       var streamReader = new StreamReader(e.Result);
       var result = streamReader.ReadToEnd();
       Console.WriteLine(result);
     }
     else
     {
       Console.WriteLine("执行WebClient的OpenReadAsync出错:" + e.Error);
     }
   }
   #endregion
   public static void Main(string[] args)
   {
     AsyncGetWithWebRequest("http://baidu.com");
     Console.WriteLine("hello");
     AsyncGetWithWebClient("http://baidu.com");
     Console.WriteLine("world");
     TestGetWebResponseAsync("http://baidu.com");
     Console.WriteLine("jxqlovejava");
     Console.Read();
   }
 }
}

希望本文所述对大家的C#程序设计有所帮助。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com