2009-08-23 7 views
0

en jouant avec l'idée d'utiliser un webservice pour mon projet, j'ai remarqué que quelques propriétés (méthode/événement) ont été créées automatiquement pour moi. Je peux voir le but de l'événement Terminé mais je ne suis pas sûr de l'endroit où la méthode Async serait utilisée.WebService Async méthode question

déclaration webmethod:

[WebMethod] 
    public string HelloBrad() 
    { 
     return "Hello Brad"; 
    } 

La consommation de service dans codebehind

localhost.Service1 service = new localhost.Service1();; 
    service.HelloBradAsync 
    service.HelloBradCompleted 
    service.HelloBrad 

quelqu'un pourrait-il s'il vous plaît expliquer l'utilisation de la méthode HelloBradAsync.

Merci

Répondre

3

méthode Async permet à votre code pour continuer d'exécuter alors que le serveur est en train de traiter le message. En utilisant votre code normal de service.HelloBrad, le thread se bloquera jusqu'à ce que les webservices retournent une réponse. Au lieu de cela, si vous appelez HelloBradAsync, il passe immédiatement à la ligne de code suivante. Lorsque le serveur est terminé, il répond à l'intérieur de l'événement "HelloBradCompleted".

Ceci afin que le service Web ne bloque pas votre thread principal pendant qu'il s'exécute, et est certainement la bonne façon de faire des affaires. Cela pourrait nécessiter un changement dans votre paradigme de programmation, mais vous constaterez que les avantages l'emportent sur les coûts.

+0

".. est certainement la bonne façon de faire des affaires" Je ne suis pas d'accord. Cela peut rendre la scène à utiliser Async si vous appelez un service dans le thread UI mais il n'y a aucune raison de le faire si vous appelez un service dans un appel bloquant, par exemple un autre WebService. –

+0

@Keivan: C'est un bon point - si vous avez besoin de la valeur de retour avant de pouvoir passer à la ligne de code suivante, avoir un appel webservice bloquant est précieux. – JustLoren

Questions connexes