Зачем нужен ContinueWith, если в {} можно поместить обе задачи
От: Passerby  
Дата: 27.12.19 12:14
Оценка:
В руководстве 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?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.