« Création d'un callback de tâche (task) » : différence entre les versions
(Page créée avec « Un callback de tâche est une tâche déclenchée par la fin de l'exécution d'une autre tâche. {{Tip|Un callback doit être enregistré, une fois suffit.}} Exemple : ... ») |
Aucun résumé des modifications |
||
Ligne 10 : | Ligne 10 : | ||
Type | Type | ||
TestTaskCallBack = Class( | TestTaskCallBack = Class(TitTask) | ||
public | public | ||
Function Execute():boolean; | Function Execute():boolean; |
Version du 29 mars 2020 à 13:54
Un callback de tâche est une tâche déclenchée par la fin de l'exécution d'une autre tâche.
Exemple :
<source lang="delphi"> unit TestSYFREWF; interface
Type
TestTaskCallBack = Class(TitTask) public Function Execute():boolean; Procedure RegisterCallBack; end;
Implementation
{TestTaskCallBack}
Function TestTaskCallBack.Execute():boolean; //Function Execute():boolean; var idx:Integer; S:string; aMsg:TdbmQueueMessage; begin
Result := True;
// Add messages to the log ProgressMessage('On TestTask Terminate');
if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then begin userContext.TaskContext.AddMessage('Has Task context'); // aMsg := userContext.TaskContext.EventContext.ReceivedMsg; if Assigned(aMsg) then begin userContext.TaskContext.AddMessage(Format('Task reference: %s',[aMsg.ValueByNames(':message.source.reference')])); userContext.TaskContext.AddMessage(Format('Message parameters count:%d',[aMsg.Count])); for idx:=0 to aMsg.Count-1 do begin S := aMsg.DisplayStrings(idx); UserContext.TaskContext.AddMessage(S); end; end; end else ProgressMessage('no task context'); Result := True;
end;
Procedure TestTaskCallBack.RegisterCallBack; //Procedure RegisterCallBack; var aReason:string; begin
if not SubscribeToEvent(TTestTask.OnTerminateSuccessID(),aReason) then showMessage('subscribe failed '+aReason);
end;
end. </source>