using System; using System.Threading.Tasks; public class AsyncMethods { public async Task FirstMethodAsync() { Console.WriteLine("First async method started."); await Task.Delay(3000); Console.WriteLine("First async method completed."); } public async Task SecondMethodAsync() { Console.WriteLine("Second async method started."); await Task.Delay(2000); Console.WriteLine("Second async method completed."); } } public class SyncMethods { public void FirstMethod() { Console.WriteLine("First sync method started."); Task.Delay(3000).Wait(); Console.WriteLine("First sync method completed."); } public void SecondMethod() { Console.WriteLine("Second sync method started."); Task.Delay(2000).Wait(); Console.WriteLine("Second sync method completed."); } } public class Program { public static async Task Main() { AsyncMethods asyncMethods = new AsyncMethods(); SyncMethods syncMethods = new SyncMethods(); syncMethods.FirstMethod(); syncMethods.SecondMethod(); Task firstAsyncTask = asyncMethods.FirstMethodAsync(); Task secondAsyncTask = asyncMethods.SecondMethodAsync(); await Task.WhenAll(firstAsyncTask, secondAsyncTask); Console.WriteLine("All methods have completed."); } }