เมื่อเร็ว ๆ นี้ฉันได้รับแจ้งว่าฉันใช้. 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");
});
}