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