Bu nedenle, geçenlerde .ContinueWith for Tasks'ımı nasıl kullandığımın onları kullanmanın doğru yolu olmadığı söylendi. Henüz internette bunun kanıtını bulamadım, bu yüzden sizlere soracağım ve cevabın ne olduğunu göreceğim. İşte .ContinueWith'i nasıl kullandığımın bir örneği:
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 3");
});
}
Şimdi bunun basit bir örnek olduğunu ve çok hızlı çalışacağını biliyorum, ancak her görevin biraz daha uzun işlem yaptığını varsayalım. Yani, bana söylendiğine göre .ContinueWith içinde prevTask.Wait () demeniz gerekir; aksi takdirde önceki görev bitmeden çalışabilirsiniz. Bu mümkün mü? İkinci ve üçüncü görevimin yalnızca önceki görevleri tamamlandığında çalışacağını varsaydım.
Bana kodu nasıl yazacağım söylendi:
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");
});
}