async和await异步执行

可以将方法前面声明为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将会等待方法完成,知道获取到结果。

捕获.PNG


首页 我的博客
粤ICP备17103704号