การใช้รูปแบบ async/await มีประโยชน์เมื่อคุณเรียกใช้สิ่งต่าง ๆ ในลักษณะซิงโครนัสหรือไม่?
ตัวอย่างเช่นในแอปของฉัน ฉันมีวิธีคงที่ที่ cron (hangfire) เรียกเพื่อทำงานต่างๆ ที่เชื่อมโยงกับ IO ตัวอย่างที่ประดิษฐ์ขึ้นอย่างง่ายคือ:
static void Run(string[] args)
{
var data = Test(args);
//..do stuff with returned data
}
public static List<string> Test(string[] args)
{
return Db.Select(args);
}
มีข้อได้เปรียบในการเขียนโค้ดนี้หรือไม่:
static void Run(string[] args)
{
var dataTask = await TestAsync(args);
dataTask.Wait();
//..do stuff with returned data
}
public static async Task<List<string>> TestAsync(string[] args)
{
return await Db.SelectAsync(args);
}
เพื่อนร่วมงานของฉันบอกฉันว่าฉันควรใช้รูปแบบนี้เสมอและใช้วิธีการ async หากมีให้ใช้งานตามที่เพิ่มไว้ภายใต้การเพิ่มประสิทธิภาพขั้นสูง แต่เขาไม่สามารถอธิบายได้ว่าทำไมถึงเป็นเช่นนั้น และฉันไม่พบคำอธิบายที่ชัดเจนจริงๆ
ถ้าฉันเขียนโค้ดด้วยรูปแบบประเภทนี้ในวิธีการแบบคงที่ มันจะออกมาเป็นดังนี้:
var data = someMethod();
data.Wait();
var data2 = someOtherMethod(data);
data2.Wait();
ฉันเข้าใจว่าการใช้รูปแบบการรอแบบ async เมื่อเริ่มงานพร้อมกันจำนวนมาก แต่เมื่อโค้ดมาจากวิธีคงที่และต้องทำงานตามลำดับเช่นนี้ จะมีประโยชน์อะไรบ้าง ฉันควรจะเขียนมันด้วยวิธีใด?
await
และWait()
ในรหัสการผลิตหรือไม่ ถ้าเป็นเช่นนั้นทำไม? - person Peter Bons   schedule 10.11.2018