Tâche 3 : modifier l'application hôte d'activité personnalisée
Dans la dernière étape de ce didacticiel, vous allez modifier l'application hôte afin de démarrer le workflow lorsque le bouton Aller à est activé. L'application hôte passe l'URL demandée par l'utilisateur en utilisant la collection Parameters du workflow séquentiel WebTearWorkflow. Pour récupérer le texte associé à cette URL, l'application hôte crée un gestionnaire d'événements pour l'événement WorkflowCompleted. Le paramètre WorkflowCompletedEventArgs pour cet événement contient le texte de l'URL. Ce texte affiché pour l'utilisateur.
Remarque : |
---|
Bien qu'il soit conseillé de suivre les exercices de façon linéaire, ce n'est pas requis. Vous pouvez démarrer cet exercice en ouvrant l'exemple de projet et en continuant avec les étapes de la section suivante. |
Pour démarrer le workflow séquentiel de WebTearWorkflow
Dans la classe MainForm, créez un champ WorkflowRuntime privé, nommé workflowRuntime.
private WorkflowRuntime workflowRuntime;
Dans le constructeur de classe MainForm, créez une nouvelle instance de la classe workflowRuntime.
workflowRuntime = new WorkflowRuntime();
Appelez la méthode StartRuntime de l'objet workflowRuntime pour démarrer le moteur d'exécution Windows Workflow Foundation.
workflowRuntime.StartRuntime();
Créez un gestionnaire d'événements pour l'événement WorkflowCompleted.
Le gestionnaire d'événements est un délégué EventHandler générique du type WorkflowCompletedEventArgs. Donnez le nom de la méthode workflowRuntime_WorkflowCompleted à ce gestionnaire d'événements.
workflowRuntime.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs> (workflowRuntime_WorkflowCompleted);
Dans la méthode workflowRuntime_WorkflowCompleted de la classe MainForm, ajoutez une instruction If afin de déterminer si la propriété InvokeRequired est true pour le contrôle data TextBox :
Si la propriété InvokeRequired du contrôle data TextBox est true, appelez la méthode Invoke du contrôle data TextBox, en passant un nouvel EventHandler générique du type WorkflowCompletedEventArgs et le nom de méthode workflowRuntime_WorkflowCompleted en tant que paramètre au constructeur du gestionnaire d'événements.
Si la propriété InvokeRequired est false, affectez à la propriété Text du contrôle data TextBox la valeur "Data" de la collection OutputParameters définie dans le paramètre WorkflowCompletedEventArgs.
private void workflowRuntime_WorkflowCompleted(object sender, WorkflowCompletedEventArgs e) { // Retrieve the downloaded page data if (data.InvokeRequired) data.Invoke(new EventHandler<WorkflowCompletedEventArgs> (workflowRuntime_WorkflowCompleted), sender, e); else data.Text = e.OutputParameters["Data"].ToString(); }
Dans la méthode goButton_Click, créez un nouvel objet Type nommé typeet affectez-lui la valeur de l'objet Type de la classe WebTearWorkflow.
Type type = typeof(WebTearWorkflow);
Créez un nouvel objet Dictionary générique nommé properties des objets avec les clés String.
Dictionary<string, object> properties = new Dictionary<string, object>();
Appelez la méthode Add de l'objet properties, en passant le chaînage "Url" et la propriété Text du contrôle address TextBox comme paramètres.
properties.Add("Url", address.Text);
Appelez la méthode CreateWorkflow définie dans l'objet workflowRuntime, en passant les variables type et properties locales comme paramètres.
Appelez la méthode Start définie dans l'objet renvoyé par la méthode CreateWorkflow.
workflowRuntime.CreateWorkflow(type, properties).Start();
Générez et exécutez l'application.
Compilation du code
Pour plus d'informations sur la compilation de votre code, consultez Compilation du code.
Pour obtenir une version définitive du didacticiel, consultez Fin du didacticiel sur les activités personnalisées.
Voir aussi
Référence
WorkflowRuntime
WorkflowInstance
CreateWorkflow
Start
WorkflowCompleted
WorkflowCompletedEventArgs
Autres ressources
Hosting
Didacticiel : héberger le moteur d'exécution Windows Workflow Foundation
Copyright ©2007 par Microsoft Corporation. Tous droits réservés.