นี่เป็นการติดตามจากคำถามก่อนหน้าที่ฉันโพสต์ การโทร วิธี async โดยใช้ Task.Run ดูเหมือนจะผิดใช่ไหม
ฉันคิดว่ารหัสที่เขียนโดยผู้รับเหมานั้นผิด แต่ต่อจากคำตอบที่ให้มา ตอนนี้ฉันสงสัยว่ามันเป็นความผิดของห้องสมุดหรือไม่ ไลบรารีนี้แสดงสองวิธีที่ฉันต้องใช้ รายการหนึ่งส่งคืน "เทมเพลต" และรายการหนึ่งใช้ส่วนหนึ่งของเทมเพลตนี้ (อย่างไรก็ตามในการใช้งานของฉัน) แต่ทั้งสองวิธีคือ async
วิธีส่งคืน Tasks
เพื่ออธิบายห้องสมุดของฉันมีวิธีการ:
public Task<TemplateInfo> TemplateInfo(TemplateInfoRequest request);
public Task<List<EmailResult>> SendMessageTemplate(SendMessageTemplateRequest request);
ฉันต้องเรียกสิ่งเหล่านี้ว่า:
public bool SendMessage()
{
var template = TemplateInfo(...);
var message = //use template to create message
var sendResponse = SendMessageTemplate(message);
return sendResponse.Count > 0;
}
ดังนั้นการโทรครั้งที่สองจึงขึ้นอยู่กับการโทรครั้งแรก นี่คือจุดที่ async ไม่สมเหตุสมผลสำหรับฉัน <สไตรค์>ฉันทำไม่ได้และไม่อยากวิ่งคู่กัน ฉันต้องการเรียกใช้ตามลำดับ ฉันต้องการวิธีของฉันแบบซิงโครนัส
คำตอบในคำถามก่อนหน้าของฉันยังระบุด้วย:
เนื่องจากคุณกำลังบล็อกวิธีอะซิงก์ (ซึ่งคุณไม่ควรทำ) จึงมีโอกาสที่คุณจะเกิดการหยุดชะงัก
ดังนั้นฉันจะเข้าถึงวิธีการ async
เหล่านี้ได้อย่างไรในลักษณะที่ได้รับการประมวลผลตามลำดับและส่งกลับผลลัพธ์แบบซิงโครนัส แต่ไม่ทำให้เกิดการหยุดชะงัก