« CreateTaskEvent (TdbmEvent) » : différence entre les versions
(Page créée avec « <source lang='delphi'>class procedure CreateTaskEvent(const iQueuName:string; const iParameter:string; iArgs:Array of variant);</source> Cette méthode de classe crée un... ») |
Aucun résumé des modifications |
||
(3 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
<source lang='delphi'>class procedure CreateTaskEvent(const | <source lang='delphi'>class procedure CreateTaskEvent(const iEventId:string; iNames:Array of variant; iValues:Array of variant);</source> | ||
Cette méthode de classe crée un | Cette méthode de classe crée un événement de type tâche. | ||
Le type de l' | Le type de l'événement est TASK | ||
{|class="wikitable" | {|class="wikitable" | ||
|- | |- | ||
| | |iEventId | ||
| | |identifiant de l'événement | ||
|- | |- | ||
| | |iNames | ||
| | |Tableau de noms de paramètre de l'évènement | ||
|- | |- | ||
| | |iValues | ||
| | |Tableau de valeurs de paramètre de l'évènement | ||
|} | |} | ||
Exemple : | |||
<source lang='delphi'> | |||
// Task to be triggered by an event | |||
Type | |||
TMyOperationEvent = class(TitTask) | |||
function Execute():Integer; | |||
class function RegisterThisTask; | |||
class procedure Start; | |||
end; | |||
function TMyOperationEvent.Execute():Integer; | |||
var idx:Integer; S:string; aMsg:TdbmQueueMessage; | |||
begin | |||
Result := True; | |||
// Add messages to the log | |||
ProgressMessage('On Task event'); | |||
if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then | |||
begin | |||
userContext.TaskContext.AddMessage('Task context'); | |||
// | |||
aMsg := userContext.TaskContext.EventContext.ReceivedMsg; | |||
if Assigned(aMsg) then | |||
begin | |||
// get message parameters | |||
// | |||
userContext.TaskContext.AddMessage('Task context has message'); | |||
userContext.TaskContext.AddMessage(Format('Message parameter 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; | |||
class function TMyOperation.RegisterThisTask; | |||
var aReason:string; | |||
begin | |||
if not SubscribeToEvent(TMyOperation.OnStartId(),aReason) then | |||
showMessage('subscribe failed '+aReason); | |||
end; | |||
class procedure TMyOperation.Start; | |||
begin | begin | ||
TdbmEvent.CreateTaskEvent(TMyOperation.OnStartId(), ['name1','name2'],['value1',2]); | |||
TdbmEvent.CreateTaskEvent( | |||
end; | end; | ||
</source> | </source> | ||
Ligne 33 : | Ligne 76 : | ||
* [[CreateCustomEvent (TdbmEvent)|CreateCustomEvent]] | * [[CreateCustomEvent (TdbmEvent)|CreateCustomEvent]] | ||
* [[TTask.Subscribe_(TitTask)|Subscribe]] | |||
[[Category:TdbmEvent]] | [[Category:TdbmEvent]] |
Dernière version du 5 décembre 2024 à 10:12
<source lang='delphi'>class procedure CreateTaskEvent(const iEventId:string; iNames:Array of variant; iValues:Array of variant);</source>
Cette méthode de classe crée un événement de type tâche.
Le type de l'événement est TASK
iEventId | identifiant de l'événement |
iNames | Tableau de noms de paramètre de l'évènement |
iValues | Tableau de valeurs de paramètre de l'évènement |
Exemple :
<source lang='delphi'>
// Task to be triggered by an event Type
TMyOperationEvent = class(TitTask) function Execute():Integer; class function RegisterThisTask; class procedure Start; end;
function TMyOperationEvent.Execute():Integer; var idx:Integer; S:string; aMsg:TdbmQueueMessage; begin
Result := True;
// Add messages to the log ProgressMessage('On Task event'); if Assigned(UserContext.TaskContext) and Assigned(userContext.TaskContext.EventContext) then begin userContext.TaskContext.AddMessage('Task context'); // aMsg := userContext.TaskContext.EventContext.ReceivedMsg; if Assigned(aMsg) then begin // get message parameters // userContext.TaskContext.AddMessage('Task context has message'); userContext.TaskContext.AddMessage(Format('Message parameter 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;
class function TMyOperation.RegisterThisTask; var aReason:string; begin
if not SubscribeToEvent(TMyOperation.OnStartId(),aReason) then showMessage('subscribe failed '+aReason);
end;
class procedure TMyOperation.Start; begin
TdbmEvent.CreateTaskEvent(TMyOperation.OnStartId(), ['name1','name2'],['value1',2]);
end; </source>
Voir aussi :