ฟังก์ชันการโทรกลับและโมเดลเหตุการณ์ของ Delphi ฟังก์ชันการโทรกลับ: ฟังก์ชันการโทรกลับเป็นกลไกที่ผู้เรียกส่งพารามิเตอร์บางอย่างไปยังวัตถุเมื่อเริ่มต้นวัตถุ (วัตถุในที่นี้อ้างถึงวัตถุใน OOP ฟังก์ชันส่วนกลาง ฯลฯ) ในขณะที่ส่งฟังก์ชัน ที่อยู่ที่ผู้โทรสามารถเข้าถึงออบเจ็กต์ได้ ฟังก์ชันนี้เป็นข้อตกลงการแจ้งเตือนระหว่างผู้โทรและผู้โทร เมื่อมีเหตุการณ์ที่ตกลงกันไว้ ผู้โทร (โดยปกติจะรวมถึงเธรดที่ทำงานด้วย) จะเรียกใช้ฟังก์ชันตามที่อยู่ของฟังก์ชันโทรกลับ ด้วยวิธีนี้ ผู้เรียกจะอยู่ในเธรดหนึ่ง และผู้เรียกจะอยู่ในอีกเธรดหนึ่ง มีฟังก์ชันบางอย่างใน Windows API ที่ใช้ฟังก์ชันเรียกกลับ เช่น CreateThread, SetWindowLong เป็นต้น ฟังก์ชันการเรียกกลับที่สอดคล้องกันถูกกำหนดไว้ในรูปแบบต่อไปนี้: function CallBackFunc(Wnd: HWND; Msg, WParam, LParam: Longint): Longint;stdcall;PROcedure ThreadFunction(Ptr: ตัวชี้) stdcall; ข้อความ: ข้อความสามารถถือเป็นรูปแบบหนึ่งของการโทรกลับได้ เนื่องจากผู้โทรส่งข้อความไปยังผู้โทรในระหว่างการเริ่มต้น หมายเลขอ้างอิงและหมายเลขข้อความจะถูกส่งต่อไปยังผู้โทรเมื่อเกิดเหตุการณ์ที่ตกลงกันไว้ ผู้โทรจะส่งข้อความ ด้วยวิธีนี้ ผู้เรียกจะอยู่ในเธรดหลัก และผู้เรียกจะอยู่ในเธรดหลักหรือเธรดของผู้ปฏิบัติงาน โมเดลเหตุการณ์ Delphi: ส่วนประกอบภาพจำนวนมากใน VCL ของ Delphi ใช้โมเดลเหตุการณ์ เช่น เหตุการณ์ OnCreate ของ TForm หลักการคือ: ระบุฟังก์ชันเหตุการณ์ ณ เวลาออกแบบ และเมื่อเหตุการณ์ถูกทริกเกอร์ ณ รันไทม์ ฟังก์ชันที่ระบุในเวลาออกแบบจะถูกเรียก . ฟังก์ชั่นเหตุการณ์ โดยกลไกแล้ว โมเดลเหตุการณ์ Delphi จะเหมือนกับการโทรกลับ แต่มีความแตกต่างบางประการในรูปแบบเฉพาะ ฟังก์ชันการโทรกลับแท้ ๆ จะอยู่ในรูปแบบของฟังก์ชันส่วนกลาง ในขณะที่เหตุการณ์ Delphi อยู่ในรูปแบบของวิธีอ็อบเจ็กต์ กล่าวคือ สามารถกำหนดประเภทฟังก์ชันการโทรกลับต่อไปนี้ได้: typeTCallBackFunc = ขั้นตอน (pData: Pointer) ของวัตถุ สิ่งนี้ทำให้เหตุการณ์ Delphi ใช้ภายในใน Delphi เท่านั้น ฟังก์ชันการโทรกลับเป็นแบบข้ามภาษา โปรดทราบว่าฟังก์ชันการโทรกลับโดยทั่วไปจะเป็นเธรดที่สร้างขึ้นในส่วนเนื้อหาการติดต่อกลับ (ส่วนประกอบใน Delphi อยู่ในเธรดหลัก) ดังนั้นจึงจำเป็นต้องมีการป้องกันส่วนที่สำคัญ