TTask.Subscribe (TitTask)
De Wiki1000
Version du 5 décembre 2024 à 11:11 par Syfre (discuter | contributions)
(Version 11)
class function Subscribe(const iEventID:string; iAttributes:Array of string; iValues:Array of variant):boolean;
Cette fonction abonne la classe de la tâche à un évènement.
La tâche sera exécutée à chaque fois que l'évènement est déclenché jusqu'au désabonnement de la tâche.
Paramètre | Usage |
---|---|
iEventID | Identifiant de l'évènement sur lequel abonner la tâche |
iAttributes | Un tableau de propriété de la tâche qui seront initialisée lorsque la tâche sera déclenchée |
iValues | Un tableau de valeur correspondant aux attributs initialisés |
Result | True si la tâche a été posté |
Exemple :
Type // manage my job MyFacade = class(TitObject) class function GetMyJobActionEventId:string; class procedure CreateEvent(const iEvent:string; obj:TitObject); class procedure CreateEventWithParams(const iEvent:string; obj:TitObject; aParamsName:Array of string; aParamsValue:Array of variant); end; class function MyFacade.GetMyJobActionEventId:string; begin Result := 'task.myjob.myaction.%'; end; class procedure MyFacade.CreateEvent(const iEvent:string; obj:TitObject); begin MyFacade.CreateEventWithParams(iEvent, obj, [], []); end; class procedure MyFacade.CreateEventWithParams(const iEvent:string; obj:TitObject; aParamsName:Array of string; aParamsValue:Array of variant); var aEvent:string; vParamsName : Array of string; vParamsValue : Array of variant; begin if Copy(iEvent,length(iEvent)-2,2)='.%' then aEvent := Copy(iEvent,1,length(iEvent)-2) else aEvent := iEvent; vParamsName := aParamsName; vParamsValue := aParamsValue; if Assigned(obj) then TdbmEvent.CreateTaskEvent(Format('%s.%s',[aEvent,obj.InstanceOID]),vParamsName,vParamsValue) else TdbmEvent.CreateTaskEvent(aEvent,vParamsName,vParamsValue); end; //Procedure TestRegisterTasks; begin // Register my task subscription MyTask.Subscribe(MyFacade.GetMyJobActionEventId,['unCode','unEntier'],['X',2]); end; //Procedure MyClass.foo(); begin // generate an event to trigger the task myFacade.CreateEventWidthParams(MyFacade.GetMyJobActionEventId, thisObject, ['unCode','unEntier'],[unCode,unEntier]); end;
Voir aussi: