Bonjour à tous.
Je sollicite votre aide car j'ai un petit soucis avec les appels synchrones et asynchrones.
Dans le cadre d'un projet dans notre société, nous avons un service WCF. Nous avons un client de test qui appel une procédure du service wcf en asynchrone. L'exécution de cette procédure étant assez longue, nous avons créé une seconde procédure qui renvoi une chaine de caractère.
Lorsque nous appelons la procédure asynchrone puis la procédure synchrone cela fonctionne bien: la procédure asynchrone est exécuté en arrière plan, j'appelle ensuite la procédure synchrone qui s'exécute et nous renvoi la réponse instantanément. Lorsque la procédure asynchrone a fini de s'exécuter, du coté client la procédure de callback (associé à la procédure asynchrone) s'exécute et affiche bien les résultats.
Jusque là, cela s'exécute comme nous l'attendions.
Le problème est le suivant: lorsque l'on relance ce déroulement, la deuxième fois, on se retrouve bloqué sur la procédure synchrone jusqu'a ce que la procédure asynchrone ai fini de s'exécuter. Auriez vous une idée du changement de comportement?
voici les différents appels que nous avons vers notre serveur wcf:
D'avance je vous remercie pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 private TourplannerServiceClient ts = new TourplannerServiceClient("basicContextOverHttp"); private void btnBuiltTourii_Click(object sender, EventArgs e) { BuildtourInput bti; bti = new BuildtourInput(); ... //mise à jour des valeurs des paramètres de notre variable bti. this.ts.BeginBuildTour(bti, new AsyncCallback(this.BuildTourAsync), bti);//Appel asynchrone this.txtBoxResponses.AppendText(this.ts.GetBuildProgress() + Environment.NewLine);//appel synchrone } private void BuildTourAsync(IAsyncResult iar) { BuildtourResult br; StringBuilder sb; br = this.ts.EndBuildTour(iar); sb = new System.Text.StringBuilder(); sb.Append(....);// création du résultat et affichage de celui-ci. }
Partager