From the below examples I cannot understand why the async and await are not working in 1st example but working in 2nd example.
1st Example:
public static async Task Main(string[] args)
{
    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();
    Console.WriteLine("started");
    var i =  await GetIntAsync(10);
    var j = await  GetstringAsync("abc");
    Console.WriteLine($"int {i}, string {j}");
    stopWatch.Stop();
    Console.WriteLine("RunTime " + stopWatch.ElapsedMilliseconds);
}
2nd Example:
public static async Task Main(string[] args)
{
    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();
    Console.WriteLine("started");
    var i =   GetIntAsync(10);
    var j =   GetstringAsync("abc");
    await i; await j;
    Console.WriteLine($"int {i.Result}, string {j.Result}");
    stopWatch.Stop();
    Console.WriteLine("RunTime " + stopWatch.ElapsedMilliseconds);
}
GetIntAsync method:
public static async Task<int> GetIntAsync(int i)
{
    Console.WriteLine("in get int waiting 3 sec's");
    await Task.Run(() =>
    {
        Thread.Sleep(3000);
        Console.WriteLine("int wait complete");
    });
    return i;
}
GetstringAsync Method:
public static async Task<string> GetstringAsync(string i)
{
    Console.WriteLine("in get int waiting 6 sec's");
    await Task.Run(() =>
    {
        Thread.Sleep(6000);
        Console.WriteLine("string wait complete");
    });
    return i;
}
 
     
    