Função de retorno de chamada e modelo de evento do Delphi Função de retorno de chamada: A função de retorno de chamada é um mecanismo no qual o chamador passa alguns parâmetros para o objeto ao inicializar um objeto (o objeto aqui se refere a objetos em OOP, funções globais, etc.), enquanto passa uma função endereço que o chamador pode acessar ao objeto. Esta função é um acordo de notificação entre o chamador e o receptor. Quando o evento acordado ocorre, o receptor (geralmente incluindo um thread de trabalho) chamará a função de acordo com o endereço da função de retorno de chamada. Dessa forma, o chamador está em um thread e o receptor está em outro thread. Existem algumas funções na API do Windows que usam funções de retorno de chamada, como CreateThread, SetWindowLong, etc. A função de retorno de chamada correspondente é definida no seguinte formato: function CallBackFunc(Wnd: HWND; Msg, WParam, LParam: Longint): Longint;stdcall;PRocedure ThreadFunction(Ptr: Pointer); stdcall; Mensagem: A mensagem também pode ser considerada como alguma forma de retorno de chamada, porque a mensagem também é passada pelo chamador para o receptor durante a inicialização. Um identificador e um número de mensagem são passados para o receptor quando o evento acordado ocorre. . O chamador envia a mensagem. Dessa forma, o chamador está no thread principal e o receptor está no thread principal ou no thread de trabalho. Modelo de evento Delphi: Muitos componentes visuais na VCL do Delphi usam modelos de eventos, como o evento OnCreate do TForm. O princípio é: especifique a função do evento em tempo de design e, quando o evento for acionado em tempo de execução, a função especificada em tempo de design será chamada. função de evento. Mecanicamente, o modelo de eventos do Delphi é igual aos retornos de chamada. Mas existem algumas diferenças nas formas específicas. Uma função de retorno de chamada pura está na forma de uma função global, enquanto um evento Delphi está na forma de um método de objeto. Ou seja, o seguinte tipo de função de retorno de chamada pode ser definido: typeTCallBackFunc =. procedimento (pData: Ponteiro) do objeto Isso torna o evento Delphi apenas Usado internamente no Delphi, a função de retorno de chamada é multilíngue. Observe também que a função de retorno de chamada geralmente é um thread criado no corpo do retorno de chamada (os componentes do Delphi estão no thread principal), portanto, é necessária proteção de seção crítica.