RunAsync1, RunAsync2, RunAsync3 have the same output. What is the difference between them? What is the best practice (design and performance)? thanks!
public static void RunAll()
{
RunAsync1();
RunAsync2();
RunAsync3();
}
public static void RunAsync1()
{
Console.WriteLine("Starting calc");
var task = Task.Run(Calc);
Console.WriteLine("Do more...");
Task.WaitAll(task);
Console.WriteLine("END");
}
public static void RunAsync2()
{
Console.WriteLine("Starting calc");
var task = CalcAsync();
Console.WriteLine("Do more...");
Task.WaitAll(task);
Console.WriteLine("END");
}
public static void RunAsync3()
{
Console.WriteLine("Starting calc");
var task = Task<int>.Run(GenerateNumber)
.ContinueWith(tsk1 => Increment(tsk1.Result))
.ContinueWith(tsk2 => PrintNum(tsk2.Result));
Console.WriteLine("Do more...");
Task.WaitAll(task);
Console.WriteLine("END");
}
public static async Task CalcAsync()
{
var num = await GenerateNumberAsync();
var num1 = await IncrementAsync(num);
PrintNum(num1);
}
private static void Calc()
{
var num = GenerateNumber();
var num1 = Increment(num);
PrintNum(num1);
}
private static int GenerateNumber()
{
Thread.Sleep(3000);
Console.WriteLine("Generated number = 5");
return 5;
}
private static int Increment(int num)
{
Thread.Sleep(3000);
Console.WriteLine("Increment number = 6");
return num + 1;
}
private static void PrintNum(int num)
{
Console.WriteLine($"Num={num}");
}
private static async Task<int> GenerateNumberAsync()
{
await Task.Delay(3000);
Console.WriteLine("Generated number = 5");
return 5;
}
private static async Task<int> IncrementAsync(int num)
{
await Task.Delay(3000);
num++;
Console.WriteLine("Increment number = 6");
return num;
}
RunAsync1, RunAsync2, RunAsync3 have the same output. What is the difference between them? What is the best practice (design and performance)? thanks!
New contributor
user10450113 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.