Fonction de rappel et modèle d'événement de Delphi Fonction de rappel : La fonction de rappel est un mécanisme dans lequel l'appelant transmet certains paramètres à l'objet lors de l'initialisation d'un objet (l'objet fait ici référence à des objets en POO, des fonctions globales, etc.), tout en passant une fonction adresse à laquelle l'appelant peut accéder à l'objet. Cette fonction est un accord de notification entre l'appelant et l'appelé Lorsque l'événement convenu se produit, l'appelé (incluant généralement un thread de travail) appellera la fonction en fonction de l'adresse de la fonction de rappel. De cette façon, l’appelant est dans un thread et l’appelé dans un autre thread. Certaines fonctions de l'API Windows utilisent des fonctions de rappel, telles que CreateThread, SetWindowLong, etc. La fonction de rappel correspondante est définie sous la forme suivante : function CallBackFunc(Wnd: HWND; Msg, WParam, LParam: Longint): Longint;stdcall;PRocedure ThreadFunction(Ptr: Pointeur); stdcall; Message : le message peut également être considéré comme une forme de rappel, car le message est également transmis par l'appelant à l'appelé lors de l'initialisation. Un identifiant et un numéro de message sont transmis à l'appelé lorsque l'événement convenu se produit. L'appelant envoie le message. De cette façon, l'appelant est dans le thread principal et l'appelé est dans le thread principal ou le thread de travail. Modèle d'événement Delphi : de nombreux composants visuels dans la VCL de Delphi utilisent des modèles d'événement, tels que l'événement OnCreate de TForm. Le principe est le suivant : spécifiez la fonction d'événement au moment de la conception, et lorsque l'événement est déclenché au moment de l'exécution, la fonction spécifiée au moment de la conception sera appelée. . fonction événementielle. Mécaniquement, le modèle d'événement Delphi est le même que les rappels. Mais il existe quelques différences dans les formes spécifiques. Une fonction de rappel pure se présente sous la forme d'une fonction globale, tandis qu'un événement Delphi se présente sous la forme d'une méthode objet. Autrement dit, le type de fonction de rappel suivant peut être défini : typeTCallBackFunc =. procédure (pData : Pointeur) de l'objet ; Cela rend l'événement Delphi uniquement Utilisée en interne dans Delphi, la fonction de rappel est multilingue. Notez également que la fonction de rappel est généralement un thread créé dans le corps du rappel (les composants de Delphi se trouvent dans le thread principal), une protection des sections critiques est donc requise.