Поскольку я понимал Task
в контексте вложенной задачи, я действительно этого не понимаю. Почему 3-й вывод перед 2-й печатью?Task.ContinueWith() родительская задача не ждет завершения дочерней задачи
Даже если я использовал Task.WaitAll(t)
, распечатать 3-й строку перед линии.
Код:
public static void Main()
{
Task t = new Task(
() =>
{
Thread.Sleep(2000);
Console.WriteLine("1st print...");
});
t.ContinueWith(
x =>
{
Thread.Sleep(2000);
Console.WriteLine("2nd print...");
},
TaskContinuationOptions.OnlyOnRanToCompletion);
t.Start();
Task.WaitAll(t);
Console.WriteLine("3rd print...");
Console.Read();
}
Выход:
Это тот же результат, даже если я использую «TaskContinuationOptions.AttachedToParent» с опцией дочерней задачи. – nunu
@ Andrey Конечно, у нас есть дублированный вопрос, но ответ на этот дублирующий вопрос основан на создании массива задач Task [], который является тем решением, которое я знаю. Но я хочу знать ответ, не создавая массив Task []. – nunu
Я хочу использовать свой автомобиль, чтобы идти в места, не ставя на него газ, но он не движется! – Jcl