前提声明:C# 5.0 .NET Framework 4.5 2012-08-15 异步和等待(async和await)、调用方信息(Caller Information) (C#版本与.NET版本对应关系以及各版本的特性).,所以VS2010及其以前的版本都是不行的。
两段代码直接看出名堂:
class Program
{
static void Main(string[] args)
{
//PaintBody();
//PaintBodyAsync();
Console.WriteLine("End");
} static async Task PaintBodyAsync()
{
Console.WriteLine("Header");
//就是遇到awaIt,这里面的东西不会阻塞,继续执行
await Task.Run(() =>
{
//System.Threading.Thread.Sleep(1000);//线程不管是否睡眠,都是先执行其他方法
Console.WriteLine("Body");
});
Console.WriteLine("Footer"); } static void PaintBody()
{
Console.WriteLine("Header");
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Body");
Console.WriteLine("Footer"); }
}