Mon activité personnalisée a un délai qui devra être défini à différentes valeurs à différents moments. La première fois qu'il est défini, cela peut prendre 5 secondes. La deuxième fois, cela peut prendre 10 secondes, et ainsi de suite. Comment peut-on faire cela ... Delay n'a pas de lambda ActivityContext qui me permettra d'obtenir une variable de workflow.Modification de la durée de DelayActivity avec une durée différente
0
A
Répondre
0
La durée est une expression TimeSpan. Il suffit d'entrer une formule qui donne la bonne quantité de temps. Quelque chose comme TimeSpan.FromSeconds (5 * loopCounter)
1
Si votre activité provient de NativeActivity, ajoutez une variable privée en tant que variable d'implémentation pendant CacheMetadata et définissez cette valeur au fur et à mesure que vous progressez dans vos boucles d'activité. Quelque chose comme:
public class RetryTest : NativeActivity
{
private Variable<int> count = new Variable<int>("Count", 1);
private Variable<TimeSpan> delayInterval = new Variable<TimeSpan>("DelayInterval", TimeSpan.FromSeconds(5));
private Delay delay = new Delay();
protected override void CacheMetadata(NativeActivityMetadata metadata)
{
metadata.AddImplementationVariable(count);
metadata.AddImplementationVariable(delayInterval);
delay.Duration = new InArgument<TimeSpan>(delayInterval);
metadata.AddImplementationChild(delay);
}
protected override void Execute(NativeActivityContext context)
{
Console.WriteLine("{0} - Execute", DateTime.Now.ToLongTimeString());
count.Set(context, count.Get(context) + 1);
context.ScheduleActivity(delay, OnDelayComplete);
}
private void OnDelayComplete(NativeActivityContext context, ActivityInstance completedInstance)
{
Console.WriteLine("{0} - DelayComplete", DateTime.Now.ToLongTimeString());
if (count.Get(context) < 3)
{
delayInterval.Set(context, TimeSpan.FromSeconds(delayInterval.Get(context).Seconds * count.Get(context)));
context.ScheduleActivity(delay, OnDelayComplete);
}
count.Set(context, count.Get(context) + 1);
}
}
Cela devrait sortie
8:49:26 a.m. - Execute
8:49:31 a.m. - DelayComplete
8:49:41 a.m. - DelayComplete
0
Eh bien, utilisez "TimeSpan.FromSeconds (5 *) loopCounter" comme dit Maurice, puis ajoutez une activité ASIGN de boîte à outils, et définir loopCounter = loopCounter + 5 ...
Questions connexes
- 1. Durée réelle de la note de la durée MIDI
- 2. Durée de mappage avec NHibernate
- 3. Changer la durée de l'animation
- 4. calculer la durée de l'appel
- 5. Calcul de la durée de la vidéo
- 6. Applications de longue durée
- 7. DllImport Durée de l'instance
- 8. Java: calcul de durée
- 9. durée de connexion mysql_connect
- 10. Durée de vie de la connexion TCP
- 11. ActionScript - Tween avec durée nulle?
- 12. Afficher l'étiquette pour une durée de temps
- 13. Durée de vie de la connexion SQL
- 14. Définir une durée de temporisation de test avec PHPUnit
- 15. Extension de durée de session
- 16. Obtenir la durée FLV avec php
- 17. Détermination de la durée d'immobilisation d'une touche
- 18. Trouver le temps la durée
- 19. Durée de vie ThreadPool & Object
- 20. Durée de transaction ASP.NET NHibernate
- 21. Recherche de la durée d'une vidéo téléchargée
- 22. Calcul de la durée du temps SQL
- 23. Modifier la durée d'affichage de ToolTipText
- 24. iPad durée de vie du lecteur flash?
- 25. Session Jquery Durée de vie
- 26. structureemap objectfactory durée de vie
- 27. API Last.fm - Durée de la piste
- 28. android obtenir la durée de maps.google.com directions
- 29. Durée d'expiration maximale de la clé Memcache
- 30. Quelle est la durée de ces mystères?