สารบัญ:
คำจำกัดความ - การเรียกใช้เมธอดแบบอะซิงโครนัสหมายถึงอะไร
การเรียกใช้เมธอดแบบอะซิงโครนัสเป็นวิธีที่ใช้ในการเขียนโปรแกรม. NET ที่กลับไปยังผู้เรียกทันทีก่อนที่การประมวลผลจะเสร็จสิ้นและไม่มีการบล็อกเธรดการโทร
เมื่อแอปพลิเคชันเรียกใช้วิธีการแบบอะซิงโครนัสมันจะสามารถดำเนินการพร้อมกับการเรียกใช้วิธีการแบบอะซิงโครนัสที่ทำงานของมันในเวลาเดียวกัน วิธีการแบบอะซิงโครนัสทำงานในเธรดแยกต่างหากจากเธรดแอปพลิเคชันหลัก ผลลัพธ์การประมวลผลจะถูกดึงผ่านสายอื่นในเธรดอื่น
วิธีการแบบอะซิงโครนัสช่วยปรับการดำเนินการของทรัพยากรให้เหมาะสมในแอปพลิเคชันที่ปรับขนาดได้ สิ่งเหล่านี้ถูกใช้เพื่อดำเนินงานที่ต้องใช้เวลามากเช่นการเปิดไฟล์ขนาดใหญ่การเชื่อมต่อกับคอมพิวเตอร์ระยะไกลการสืบค้นฐานข้อมูลการเรียกใช้บริการทางเว็บและเว็บฟอร์ม ASP.NET
การเรียกเมธอดแบบอะซิงโครนัสอาจเรียกว่าการเรียกใช้เมธอดแบบอะซิงโครนัส (AMI)
Techopedia อธิบายการเรียกใช้วิธีอะซิงโครนัส
วิธีการแบบอะซิงโครนัสแตกต่างจากวิธีการแบบซิงโครนัสในลักษณะที่ส่งคืนจากการโทร ในขณะที่การเรียกใช้เมธอดแบบอะซิงโครนัสกลับมาทันทีทำให้การเรียกโปรแกรมดำเนินการอื่น ๆ การเรียกใช้เมธอดแบบซิงโครนัสรอให้วิธีการดำเนินการให้เสร็จสิ้นก่อนดำเนินการต่อด้วยโปรแกรมโฟลว์
กรอบงาน. NET มีโครงสร้างพื้นฐานแบบอะซิงโครนัสในตัวเพื่อให้วิธีการใด ๆ สามารถเรียกใช้แบบอะซิงโครนัสได้โดยไม่ต้องเปลี่ยนรหัส
กรอบงาน. NET ให้สองรูปแบบการออกแบบเพื่อใช้วิธีการแบบอะซิงโครนัสซึ่งเป็นแบบที่ใช้ตัวแทนแบบอะซิงโครนัส (วัตถุ IASyncResult) และเหตุการณ์ รูปแบบของผู้ได้รับมอบหมายแบบอะซิงโครนัสมีความซับซ้อนมากขึ้นและให้ความยืดหยุ่นซึ่งทำให้เหมาะกับรูปแบบการเขียนโปรแกรมที่ซับซ้อนหลายรูปแบบ โมเดลตามเหตุการณ์นั้นง่ายและควรใช้ในกรณีส่วนใหญ่
ในรูปแบบผู้รับมอบสิทธิ์แบบอะซิงโครนัสวัตถุผู้รับมอบสิทธิ์ใช้สองวิธี: BeginInvoke และ EndInvoke BeginInvoke มีรายการของพารามิเตอร์ซึ่งคล้ายกับฟังก์ชันที่ถูกรวมไว้พร้อมกับพารามิเตอร์ทางเลือกเพิ่มเติมสองรายการ มันส่งคืนวัตถุ IAsyncResult EndInvoke ส่งกลับสองพารามิเตอร์ (ประเภท out และ ref) พร้อมกับวัตถุ IAsyncResult BeginInvoke ใช้สำหรับการเริ่มต้นการโทรแบบอะซิงโครนัสในขณะที่ EndInvoke จะใช้ในการดึงผลลัพธ์ของการโทรแบบอะซิงโครนัส
รูปแบบอะซิงโครนัสที่ยึดตามเหตุการณ์ใช้คลาสที่มีวิธีการอย่างน้อยหนึ่งวิธีชื่อ MethodNameAsync ซึ่งมีเวอร์ชันซิงโครนัสที่สอดคล้องกันซึ่งดำเนินการบนเธรดปัจจุบัน รูปแบบที่ยึดตามเหตุการณ์อาจมีเมธอด MethodNameCompleted และ MethodNameAsyncCancel รูปแบบนี้ทำให้คลาสสามารถสื่อสารกับการดำเนินการแบบอะซิงโครนัสที่ค้างอยู่โดยใช้โมเดลเหตุการณ์ของผู้รับมอบสิทธิ์
ต่อไปนี้เป็นเคล็ดลับที่เกี่ยวข้องกับวิธีการแบบอะซิงโครนัส:
- สำหรับการเกิดพร้อมกันสูงต้องหลีกเลี่ยงวิธีการแบบอะซิงโครนัส
- ต้องมีความระมัดระวังในขณะที่ผ่านการอ้างอิงวัตถุที่ใช้ร่วมกัน
- EndXXX (เรียกว่าในตอนท้ายของการดำเนินการแบบอะซิงโครนัส) จะต้องถูกเรียกให้สร้างใหม่ข้อยกเว้นและหลีกเลี่ยงความล้มเหลว
- โดยการจับและบันทึกออบเจ็กต์ข้อยกเว้นทั้งหมดในวิธีอะซิงโครนัสมันสามารถถูกโยนใหม่ได้ในระหว่างการโทร EndXXX
- การควบคุมในส่วนต่อประสานผู้ใช้ที่เริ่มต้นการทำงานแบบอะซิงโครนัสที่ต้องใช้เวลานานจะต้องปิดการใช้งานหากจำเป็นสำหรับจุดประสงค์นั้นเท่านั้น
- วิธีการแบบอะซิงโครนัสจะต้องดำเนินการด้วยความเข้าใจในมัลติเธรดและที่ซึ่งพวกเขาพิสูจน์แล้วว่ามีประสิทธิภาพมากกว่าการใช้วิธีการแบบซิงโครนัส