可以将方法前面声明为async表明这个方法有需要异步(分配线程)来执行,所以一定要有await,它表明了它这条语句是需要异步执行的。
using System;
using System.Net;
using System.Threading.Tasks;
namespace Async
{
class Program
{
static void Main(string[] args)
{
Task<string> ss = DownLoadStr();
Console.WriteLine(1);
Console.WriteLine(ss.Result.Substring(100,100));
Console.WriteLine(2);
Console.ReadKey();
}
async static Task<string> DownLoadStr()
{
Console.WriteLine("异步开始!");
WebClient wc = new WebClient();
//await表明下载网页是异步执行的,可以返回到Main中继续执行,同时它也在执行
string s = await wc.DownloadStringTaskAsync("http://www.chicai.group");
Console.WriteLine("完成异步方法");
return s;
}
}
}async的返回值必须是void、Task、Task<>类型的,string表示return(返回)的类型。
但是方法体返回的其实还是Task<T>,可以通过task的Result方法获取到方法中return的结果
获取结果时,如果异步方法没有完成,Main将会等待方法完成,知道获取到结果。
