В руководстве
https://metanit.com/sharp/tutorial/12.3.php приводится пример использования ContinueWith:
using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
namespace HelloApp
{
class Program
{
static void Main(string[] args)
{
Task<int> task1 = new Task<int>(()=>Sum(4,5));
// задача продолжения
Task task2 = task1.ContinueWith(sum => Display(sum.Result));
task1.Start();
// ждем окончания второй задачи
task2.Wait();
Console.WriteLine("End of Main");
Console.ReadLine();
}
static int Sum(int a, int b) => a + b;
static void Display(int sum)
{
Console.WriteLine($"Sum: {sum}");
}
}
}
Но зачем нужен ContinueWith, если можно сразу выполнить обе задачи поместив их в один Task?
Task task1 = new Task(() => { int sum = Sum(4, 5); Display(sum); });
task1.Start();
task1.Wait();
Console.WriteLine("End of Main");
Console.ReadLine();
В каких случаях так нельзя сделать и нужно применять ContinueWith?