Поэтому мне недавно сообщили, что я использую мой .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");
});
}