Partager via


définir et utiliser des délégués d’activité dans le concepteur de workflow

.NET Framework 4.5 inclut un concepteur prêt à l’emploi pour l’activité InvokeDelegate. Ce concepteur peut être utilisé pour assigner des délégués à l'activité qui dérive de ActivityDelegate, telle que ActivityAction ou ActivityFunc<TResult>.

Définir un délégué d'activité

  1. Créez un nouveau projet d’application console de workflow.

    Notes

    Si vous ne voyez pas les modèles de projet Workflow, installez d’abord le composant Windows Workflow Foundation de Visual Studio. Pour obtenir des instructions détaillées, consultez Installer Windows Workflow Foundation.

  2. Dans l’Explorateur de solutions, cliquez avec le bouton droit de la souris sur le projet, puis sélectionnez Ajouter>Nouvel élément. Sélectionnez la catégorie Workflow, puis le modèle d’élément Activité. Nommez la nouvelle activité MyForEach.xaml et sélectionnez OK.

    L’activité s’ouvre dans le concepteur de workflow.

  3. Dans le concepteur de flux de travail, cliquez sur l’onglet Arguments.

  4. Cliquez sur Créer un argument. Nommez le nouvel argument Éléments.

  5. Dans la colonne Type d’argument, sélectionnez Tableau de [T].

  6. Dans le navigateur de types, sélectionnez Objet, puis sélectionnez OK.

  7. Cliquez de nouveau sur Créer un argument. Nommez le nouvel argument Body. Dans la colonne Direction pour le nouvel argument, sélectionnez Propriété.

  8. Dans la colonne Type d’argument, sélectionnez Rechercher des types

  9. Dans le navigateur de types, entrez ActivityAction dans le champ Nom de type. Sélectionnez ActivityAction<T> dans l’arborescence. Sélectionnez Objet dans la liste déroulant qui s’affiche pour attribuer le type ActivityAction<Object> à l’argument.

  10. Faites glisser une activité While de la section Flux de contrôle de la boîte à outils vers l’aire du concepteur.

  11. Sélectionnez l’activité While et cliquez sur l’onglet Variables.

  12. Sélectionnez Créer une variable. Nommez la nouvelle variable Index.

  13. Dans la colonne Type de variable, sélectionnez Int32. Conservez la Portée comme While, et la colonne Par défaut vide.

  14. Définissez la propriété Condition de l’activité While pour indexer < Items.Length;.

  15. Faites glisser une activité InvokeDelegate de la section Primitives de la boîte à outils vers la section Body de l’activité While .

  16. Sélectionnez Body dans la liste déroulante de délégué.

  17. Dans la grille Propriétés pour l’activité InvokeDelegate, cliquez sur le bouton dans la propriété Delegate Arguments.

  18. Dans la colonne Valeur de l’argument nommé Argument, entrez Items[Index]. Cliquez sur OK pour fermer la boîte de dialogue DelegateArguments.

  19. Faites glisser une activité Assign sur la ligne horizontale sous l'activité InvokeDelegate. L’activité Assign est créée, et une activité Sequence est créée automatiquement pour contenir les deux activités dans la section Body de l’activité MyForEach. La séquence est nécessaire dans la mesure où la section Body ne peut contenir qu’une seule activité. La fonctionnalité de création automatique d’une nouvelle activité Sequence est une nouveauté de .NET Framework 4.5.

  20. Affectez la valeur index à la propriété À de l’activité Assign. Affectez la valeur index+1 à la propriété Valeur de l’activité Assign.

    L’activité personnalisée MyForEach appelle une activité arbitraire une fois pour chaque valeur passée dans celle-ci via la collection Éléments, avec les valeurs de la collection comme entrées de l’activité.

Utiliser l'activité personnalisée dans un workflow

  1. Générez le projet en appuyant sur Ctrl+Maj+B.

  2. Dans l’Explorateur de solutions, ouvrez Workflow1.xaml dans le concepteur.

  3. Faites glisser une activité MyForEach de la boîte à outils jusqu’à l’aire du concepteur. L’activité se trouve dans une section de la boîte à outils avec le même nom que le projet.

  4. Définissez la propriété Éléments de l’activité MyForEach à new Object[] {1, « abc »}.

  5. Faites glisser une activité WriteLine de la section Primitives de la boîte à outils vers la section Delegate:Body de l’activité MyForEach.

  6. Définissez la propriété Texte de l’activité WriteLine à Argument.ToString().

Lorsque le workflow s’exécute, la console affiche la sortie suivante :

1abc