Тож нещодавно мені сказали, що як я використовую свою програму .ContinueWith for Tasks, не є правильним способом їх використання. Я ще не мав знайти доказів цього в Інтернеті, тому я запитаю вас, хлопці, і подивлюсь, яка відповідь. Ось приклад того, як я використовую .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");
});
}