2010-07-29 7 views
0

J'appelle une méthode côté serveur (par $ .ajax de jQuery) qui appelle une méthode asynchrone WebService de longue durée. Le problème est que, bien que cette méthode de longue durée ne soit pas complète, je ne peux pas obtenir la progression de cette méthode pour ma barre de progression. Pourquoi le serveur attend jusqu'à la fin de la méthode?ASP.NET un WebService asynchrone? Est-ce vraiment asynchrone?

[Résolu]!

ThreadPool.QueueUserWorkItem(state => service.MyMethod()); 

ce code fait que mon serveur web n'attend pas pour la méthode complète, la barre de progression est mise à jour. Seulement 1 ligne de code .....

+0

Quel serveur attend, le serveur Web pour le site ou le service Web hébergeant la méthode "asynchrone"? – SargeATM

+0

le serveur de site Web – Tony

+0

Je pense que ce n'est pas une réponse mais une question à la question, et pour cette raison existe les commentaires. – Aristos

Répondre

1

Ce is almost the same answer - to a different question.

La solution est d'ajouter "Web Gardern" ou "Web Pool", signifie piscines plus de travail et les fils, parce que chaque piscine est thread-safe et doit attendre jusqu'à la fin du prochain appel.

+0

alors, alors il n'y a aucune possibilité d'obtenir le progrès actuel de l'opération jusqu'à son achèvement? – Tony

+0

@Tony Il est possible d'obtenir la progression actuelle de l'opération en utilisant un nouveau thread dans la requête. Par défaut la demande faite sur le même fil, mais vous pouvez créer un nouveau fil pour faire le travail - est simple, besoin de synchronisation et quelques tests, mais vous pouvez le faire - et maintenant je vois que vous le trouvez. Belle façon, j'utilise des fils simples, bonne idée ... – Aristos