using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleApp2
{
class Program
{
static void Main()
{
Console.WriteLine("Without async,the spend time is ");
StopWatchTool(GetClientInformationWithoutAsync);
Console.WriteLine("With async,the spend time is ");
StopWatchTool(GetClientInformationWithAsync);
Console.Read();
}
private static void StopWatchTool(Action action)
{
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
action();
stopwatch.Stop();
Console.WriteLine(stopwatch.Elapsed);
}
private static void GetClientInformationWithoutAsync()
{
var location = Client.GetLocation();
var weather = Client.GetWeather();
Console.WriteLine(location + " " + weather);
}
private async static void GetClientInformationWithAsync()
{
var location2 = Client.GetLocationTaskAsync();
var weather2 = Client.GetWeatherTaskAsync();
await Task.WhenAll(location2, weather2);
Console.WriteLine(location2.Result + " " + weather2.Result);
}
}
class Client
{
public static String GetWeather()
{
Thread.Sleep(1000);
return "Sunny";
}
public static Task<String> GetWeatherTaskAsync()
{
var a = new Task<string>(GetWeather);
a.Start();
return a;
}
public static String GetLocation()
{
Thread.Sleep(2000);
return "Pukou";
}
public static Task<String> GetLocationTaskAsync()
{
var a= new Task<string>(GetLocation);
a.Start();
return a;
}
}
}