Jadi saya baru-baru ini diberi tahu bahwa cara saya menggunakan .ContinueWith untuk Tasks bukanlah cara yang tepat untuk menggunakannya. Saya belum menemukan buktinya di internet jadi saya akan bertanya kepada kalian dan melihat apa jawabannya. Berikut adalah contoh cara saya menggunakan .ContinueWith:
public Task DoSomething()
{
return Task.Factory.StartNew(() =>
{
Console.WriteLine("Step 1");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 2");
})
.ContinueWith((prevTask) =>
{
Console.WriteLine("Step 3");
});
}
Sekarang saya tahu ini adalah contoh sederhana dan akan berjalan sangat cepat, tetapi anggap saja setiap tugas melakukan operasi yang lebih lama. Jadi, apa yang saya diberitahu adalah bahwa di .ContinueWith, Anda perlu mengatakan prevTask.Wait (); jika tidak, Anda bisa melakukan pekerjaan sebelum tugas sebelumnya selesai. Apakah itu mungkin? Saya berasumsi tugas kedua & ketiga saya hanya akan berjalan setelah tugas sebelumnya selesai.
Apa yang saya diberitahu bagaimana menulis kode:
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");
});
}