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.");
}
}