Поэтому мне недавно сказали, что то, как я использую .ContinueWith для задач, было неправильным способом их использования. Мне еще предстоит найти доказательства этого в Интернете, поэтому я спрошу вас, ребята, и посмотрю, какой будет ответ. Вот пример того, как я использую .ContinueWith:
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 3");
});
}
Теперь я знаю, что это простой пример, и он будет работать очень быстро, но предположим, что каждая задача выполняет более длительную операцию. Итак, мне сказали, что в .ContinueWith вам нужно сказать prevTask.Wait (); в противном случае вы могли бы выполнить работу до завершения предыдущей задачи. Это вообще возможно? Я предполагал, что моя вторая и третья задачи будут выполняться только после завершения их предыдущей задачи.
Что мне сказали, как писать код:
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
prevTask.Wait();
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
prevTask.Wait();
Console.WriteLine("Step 3");
});
}