Condividi tramite


Procedura: accedere a un servizio Web in modo asincrono in codice gestito

Aggiornamento: novembre 2007

Per ogni metodo Web definito su una classe proxy di un servizio Web esiste un metodo asincrono corrispondente. La classe proxy genera automaticamente metodi asincroni e un evento corrispondente per ogni metodo Web. Quando viene effettuata la chiamata, il metodo asincrono viene eseguito su un altro thread e, nel momento in cui viene restituito, genera l'evento corrispondente. Per eseguire il codice quando viene restituito un metodo asincrono, è possibile creare un gestore per l'evento corrispondente.

Per chiamare un metodo Web in modo asincrono con Visual Basic

  1. Dichiarare un'istanza della classe proxy del servizio Web utilizzando la parola chiave WithEvents, come indicato di seguito:

    Dim WithEvents myWebService As New Service1
    
    Nota:

    Il progetto deve contenere un riferimento Web al servizio Web.

  2. Nell'editor di codice utilizzare la parola chiave Handles per creare un gestore eventi MethodCompleted corrispondente al metodo che si desidera chiamare. Se ad esempio si chiama in modo asincrono un metodo denominato HelloWorld, verrà creato un metodo analogo a quello riportato di seguito:

    Private Sub HelloWorldComplete(ByVal sender As Object, _
       ByVal completed As localhost.HellowWorldCompletedEventArgs) _
       Handles myWebService.HelloWorldCompleted
    ' Insert code to implement the method here
    End Sub
    

    Il metodo che gestisce l'evento MethodCompleted deve corrispondere alla firma dell'evento. A tal fine, è in genere necessario che il mettente sia rappresentato da un argomento Object e che un'istanza della classe EventArgs del metodo si trovi nello stesso spazio dei nomi della classe proxy del servizio Web. È possibile utilizzare l'editor di codice anche per la creazione automatica di gestori eventi. Per ulteriori informazioni, vedere Procedura: creare gestori eventi nell'editor di codice Visual Basic.

  3. Chiamare il metodo Web utilizzando la forma MethodAsync del metodo. Se ad esempio si chiama in modo asincrono un metodo Web denominato HelloWorld, verrà utilizzata la seguente sintassi:

    HelloWorldAsync
    

    Il valore restituito del metodo sarà disponibile nella proprietà Result della classe EventArgs.

Per chiamare un metodo Web in modo asincrono con C#

  1. Dichiarare un'istanza della classe proxy del servizio Web, come indicato di seguito:

    private localhost.Service1 myWebService = new localhost.Service1
    ();
    
    Nota:

    Il progetto deve contenere un riferimento Web al servizio Web.

  2. Nell'editor di codice aggiungere un gestore eventi MethodCompleted corrispondente al metodo che si desidera chiamare. Se ad esempio si chiama in modo asincrono un metodo denominato HelloWorld, verrà creato un metodo analogo a quello riportato di seguito:

    private void HelloWorldCompleted(Object sender, 
        localhost.HelloWorldCompletedEventArgs Completed) 
        {
            // Insert code to implement the method here
        }
    

    Il metodo che gestisce l'evento MethodCompleted deve corrispondere alla firma dell'evento. A tal fine, è in genere necessario che il mettente sia rappresentato da un argomento Object e che un'istanza della classe EventArgs del metodo si trovi nello stesso spazio dei nomi della classe proxy del servizio Web. È possibile utilizzare l'editor di codice anche per la creazione automatica di gestori eventi. Per ulteriori informazioni, vedere Procedura: sottoscrivere e annullare la sottoscrizione di eventi (Guida per programmatori C#).

  3. Nel costruttore della classe aggiungere un gestore eventi MethodCompleted all'elenco dei gestori di tale evento, come indicato di seguito:

    private void Form1_Load(object sender, EventArgs e)
    {
        myWebService.HelloWorldCompleted += new 
        localhost.HelloWorldCompletedEventHandler(HelloWorldCompleted);
    }
    
  4. Chiamare il metodo Web utilizzando la forma MethodAsync del metodo. Se ad esempio si chiama in modo asincrono un metodo Web denominato HelloWorld, verrà utilizzata la seguente sintassi:

    HelloWorldAsync();
    

    Il valore restituito del metodo sarà disponibile nella proprietà Result della classe EventArgs.

Vedere anche

Concetti

Comunicazione asincrona con i servizi Web XML

Altre risorse

Accesso a servizi Web in codice gestito