using System; using System.Threading.Tasks; public class Ex4 { public static async Task Run() { /* Example working with Tasks and awaiting them later */ var lowerCaseString = "i want to be an upper case string"; Console.WriteLine("main: " + lowerCaseString); // Start the task but do not await yet Task upperCaseTask = WorkOnStringAsync(lowerCaseString); Console.WriteLine("main: WorkOnStringAsync has been called, doing other work..."); // Now await the result Console.WriteLine("main: Now waiting for the result"); var upperCaseString = await upperCaseTask; Console.WriteLine("main: " + upperCaseString); } private static async Task WorkOnStringAsync(string s) { Console.WriteLine("Task: Async task started"); Console.WriteLine("Task: Waiting for 2 sec"); await Task.Delay(2000); Console.WriteLine("Task: Done waiting, returning the upper case string"); return s.ToUpper(); } }