콜백 함수와 델파이의 이벤트 모델 콜백 함수: 콜백 함수는 객체를 초기화할 때 호출자가 객체에 일부 매개변수를 전달하는 메커니즘입니다(여기서 객체는 OOP, 전역 함수 등의 객체를 나타냅니다). 호출자가 객체에 접근할 수 있는 주소. 이 함수는 호출자와 호출 수신자 간의 알림 계약입니다. 합의된 이벤트가 발생하면 호출 수신자(보통 작업 스레드 포함)는 콜백 함수 주소에 따라 함수를 호출합니다. 이렇게 하면 호출자는 한 스레드에 있고 호출 수신자는 다른 스레드에 있습니다. Windows API에는 CreateThread, SetWindowLong 등과 같은 콜백 함수를 사용하는 일부 함수가 있습니다. 해당 콜백 함수는 다음 형식으로 정의됩니다. function CallBackFunc(Wnd: HWND; Msg, WParam, LParam: Longint): Longint;stdcall;PROcedure ThreadFunction(Ptr: 포인터); stdcall; 메시지: 메시지는 초기화 중에 호출자가 호출자에게 전달하기 때문에 일종의 콜백으로 간주될 수도 있습니다. 발신자가 메시지를 보냅니다. 이러한 방식으로 호출자는 기본 스레드에 있고 호출 수신자는 기본 스레드 또는 작업자 스레드에 있습니다. Delphi 이벤트 모델: Delphi VCL의 많은 시각적 구성 요소는 TForm의 OnCreate 이벤트와 같은 이벤트 모델을 사용합니다. 원칙은 디자인 타임에 이벤트 함수를 지정하고 이벤트가 런타임에 트리거될 때 디자인 타임에 지정된 함수가 호출된다는 것입니다. .이벤트 기능. 기계적으로 델파이 이벤트 모델은 콜백과 동일합니다. 그러나 구체적인 형태에는 약간의 차이가 있습니다. 순수 콜백 함수는 전역 함수 형태인 반면, 델파이 이벤트는 객체 메소드 형태입니다. 즉, 다음과 같은 콜백 함수 유형을 정의할 수 있습니다. 프로시저(pData: 포인터) of object; 이는 델파이 이벤트를 델파이 내부에서만 사용하게 하며, 콜백 기능은 언어 간입니다. 또한 콜백 함수는 일반적으로 콜백 본문에서 생성된 스레드이므로(Delphi의 구성 요소는 메인 스레드에 있음) 임계 섹션 보호가 필요합니다.