c#
来源:互联网 发布:js 从数据库导出excel 编辑:程序博客网 时间:2024/06/01 11:12
异步方法A(GetStringAsync())如何调用:
a. 编写一个异步方法B(DownLoadAsync()),在其中调用你需要调用的异步方法A(GetStringAsync());使用await等待其返回你需要的结果(此处阻塞); 在await之后,执行“得到异步方法A(GetStringAsync())的执行结果”之后的操作(相当于执行回调函数)。
b. 在主线程(Main())调用异步方法B(DownLoadAsync()),不用await,所以不会阻塞;在后面继续该干嘛干嘛。
using System;using System.Net.Http;using System.Threading;namespace AsyncTest2{ class Program { static void Main(string[] args) { Console.WriteLine("Start downloading..."); string url = @"http://www.baidu.com"; // b. DownLoadAsync(url); // 上面不会阻塞;这儿的代码会继续执行 while (true) { Console.WriteLine("Working on other stuff..."); Thread.Sleep(1000); } } public static async void DownLoadAsync(string url) { string content = string.Empty; using (HttpClient client = new HttpClient()) { // 此处阻塞,事实上是直接返回了Main函数;等待GetStringAsync()完成之后,直接执行await这一行之后的内容,结束之后会再次返回Main函数。 content = await client.GetStringAsync(url); } // a. 此处相当于回调函数 Console.WriteLine("End downloading..."); Console.WriteLine(content); } }}
阅读全文
0 0