Fungsi panggilan balik dan model peristiwa Delphi Fungsi panggilan balik: Fungsi panggilan balik adalah mekanisme di mana pemanggil meneruskan beberapa parameter ke objek saat menginisialisasi suatu objek (objek di sini mengacu pada objek dalam OOP, fungsi global, dll.), sambil meneruskan suatu fungsi alamat yang pemanggil dapat mengakses ke objek. Fungsi ini merupakan perjanjian pemberitahuan antara pemanggil dan penerima panggilan. Ketika peristiwa yang disepakati terjadi, penerima panggilan (biasanya termasuk thread yang berfungsi) akan memanggil fungsi sesuai dengan alamat fungsi panggilan balik. Dengan cara ini, penelepon berada di satu thread dan yang dipanggil berada di thread lain. Ada beberapa fungsi di Windows API yang menggunakan fungsi callback, seperti CreateThread, SetWindowLong, dll. Fungsi panggilan balik yang sesuai didefinisikan dalam bentuk berikut: function CallBackFunc(Wnd: HWND; Msg, WParam, LParam: Longint): Longint;stdcall;PRocedure ThreadFunction(Ptr: Pointer); stdcall; Pesan: Pesan juga dapat dianggap sebagai suatu bentuk panggilan balik, karena pesan tersebut juga diteruskan oleh pemanggil ke penerima selama inisialisasi. Sebuah pegangan dan nomor pesan diteruskan ke penerima ketika peristiwa yang disepakati terjadi . Penelepon mengirimkan pesan. Dengan cara ini, pemanggil berada di thread utama dan callee berada di thread utama atau thread pekerja. Model kejadian Delphi: Banyak komponen visual di VCL Delphi yang menggunakan model kejadian, seperti kejadian OnCreate TForm. Prinsipnya adalah: tentukan fungsi kejadian pada waktu desain, dan ketika kejadian dipicu saat runtime, fungsi yang ditentukan pada waktu desain akan dipanggil. .fungsi acara. Secara mekanis, model event Delphi sama dengan callback. Namun ada beberapa perbedaan dalam bentuk spesifiknya. Fungsi callback murni berbentuk fungsi global, sedangkan event Delphi berbentuk metode objek. Artinya, tipe fungsi callback berikut dapat didefinisikan: typeTCallBackFunc = prosedur (pData: Pointer) objek; Ini membuat acara Delphi hanya Digunakan secara internal di Delphi, fungsi panggilan balik adalah lintas bahasa. Perhatikan juga bahwa fungsi panggilan balik umumnya merupakan thread yang dibuat di badan panggilan balik (komponen di Delphi ada di thread utama), sehingga diperlukan perlindungan bagian kritis.