标签:
例子:
using System; using System.Collections.Generic; using System.Linq; using System.Data; using System.Text; using System.Threading.Tasks; using System.Security.Cryptography; using System.Threading; using System.Diagnostics; using System.Threading.Tasks; using System.Net.Http; namespace Test { class Program { public delegate void PrintDelegate(string s); static void Main(string[] args) { AccessTheWebAsync(); Console.WriteLine("aaaaaa"); Console.ReadLine(); } public static async Task AccessTheWebAsync() { // 你需要添加System.Net.Http的引用来声明client HttpClient client = new HttpClient(); // GetStringAsync 返回 Task. 这意味着当Task结束等待之后 // 你将得到一个string (urlContents). Task<string> getStringTask = client.GetStringAsync("https://www.baidu.com/"); // 你可以做一些不依赖于 GetStringAsync 返回值的操作. DoIndependentWork(); // await 操作挂起了当前方法AccessTheWebAsync. // - AccessTheWebAsync 直到getStringTask完成后才会继续. // - 同时, 控制权将返回 AccessTheWebAsync 的调用者. // - 控制权会在getStringTask完成后归还到AccessTheAsync. // - await操作将取回getStringTask中返回的string结果. string urlContents = await getStringTask; Console.WriteLine(urlContents); //string content = await client.GetStringAsync("http://www.baidu.com"); // return语句用来指定一个整数结果。 // 调用AccessTheWebAsync将会收到一个返回值的长度. //return urlContents.Length; } static void DoIndependentWork() { Console.WriteLine("Work"); } } }
其实一直到await getStringTask的时候才去页面http://www.baidu.com去抓取信息,这个是我抓包获得的结果,以前还以为它在定义的时候就执行的呢,现在想来只是换个线程。
http://www.godoone.com/archives/asynchronous-programming-async-await.html
标签:
原文地址:http://www.cnblogs.com/hongdada/p/4685851.html