HttpSimpleClientProtocol.BeginInvoke(String, String, Object[], AsyncCallback, Object) Metodo

Definizione

Inizia una chiamata asincrona di un metodo di un servizio Web XML.Starts an asynchronous invocation of a method of an XML Web service.

protected:
 IAsyncResult ^ BeginInvoke(System::String ^ methodName, System::String ^ requestUrl, cli::array <System::Object ^> ^ parameters, AsyncCallback ^ callback, System::Object ^ asyncState);
protected IAsyncResult BeginInvoke (string methodName, string requestUrl, object[] parameters, AsyncCallback callback, object asyncState);
member this.BeginInvoke : string * string * obj[] * AsyncCallback * obj -> IAsyncResult
Protected Function BeginInvoke (methodName As String, requestUrl As String, parameters As Object(), callback As AsyncCallback, asyncState As Object) As IAsyncResult

Parametri

methodName
String

Nome del metodo di servizio Web XML.The name of the XML Web service method.

requestUrl
String

URL da utilizzare al momento della creazione di WebRequest.The URL to use when creating the WebRequest.

parameters
Object[]

Matrice di oggetti contenente i parametri da passare al metodo del servizio Web XML.An array of objects containing the parameters to pass to the XML Web service method. L'ordine dei valori nella matrice corrisponde all'ordine dei parametri nel metodo di chiamata della classe derivata.The order of the values in the array corresponds to the order of the parameters in the calling method of the derived class.

callback
AsyncCallback

Delegato da chiamare una volta completata la chiamata al metodo asincrona.The delegate to call when the asynchronous method call is complete. Se callback è null, il delegato non viene chiamato.If callback is null, the delegate is not called.

asyncState
Object

Informazioni aggiuntive fornite da un client.The additional information supplied by a client.

Restituisce

Oggetto IAsyncResult che può essere passato al metodo EndInvoke(IAsyncResult) per ottenere i valori restituiti dal metodo del servizio Web XML.An IAsyncResult that can be passed to the EndInvoke(IAsyncResult) method to obtain the return values from the XML Web service method.

Eccezioni

La richiesta ha raggiunto il computer server ma non è stata elaborata con esito positivo.The request reached the server computer, but was not processed successfully.

Esempi

L'esempio di codice seguente è un Web Form ASP.NET, che chiama un servizio Web XML Mathdenominato.The following code example is an ASP.NET Web Form, which calls an XML Web service named Math. All'interno EnterBtn_Click della funzione, il Web Form avvia e completa una chiamata asincrona Add del metodo di servizio Web XML.Within the EnterBtn_Click function, the Web Form starts and completes an asynchronous invocation of the Add XML Web service method.

<%@ Page Language="C#" %>
<html>
    <script language="C#" runat="server">
       void EnterBtn_Click(Object Src, EventArgs E) 
          {
             MyMath.Math math = new MyMath.Math();
 
         // Call the Add XML Web service method asynchronously.
         IAsyncResult result = math.BeginAdd(Convert.ToInt32(Num1.Text), Convert.ToInt32(Num2.Text), null, null);
             
         // Wait for the asynchronous call to complete.
         result.AsyncWaitHandle.WaitOne();
 
         // Complete the asynchronous call to the Add XML Web service method.
         int total = math.EndAdd(result);
 
         Total.Text = "Total: " + total.ToString();
         }
 
    </script>
 
    <body>
       <form action="MathClient.aspx" runat=server>
           
          Enter the two numbers you want to add and then press the Total button.
          <p>
          Number 1: <asp:textbox id="Num1" runat=server/>  +
          Number 2: <asp:textbox id="Num2" runat=server/> =
          <asp:button text="Total" Onclick="EnterBtn_Click" runat=server/>
          <p>
          <asp:label id="Total"  runat=server/>
          
       </form>
    </body>
 </html>
<%@ Page Language="VB" %>
<html>
    <script language="VB" runat="server">
    Sub EnterBtn_Click(Src As Object, E As EventArgs)
        Dim math As New MyMath.Math()
        
        ' Call to Add XML Web service method asynchronously.
        Dim result As IAsyncResult = math.BeginAdd(Convert.ToInt32(Num1.Text), Convert.ToInt32(Num2.Text), Nothing, Nothing)
        
        ' Wait for the asynchronous call to complete.
        result.AsyncWaitHandle.WaitOne()
        
        ' Complete the asynchronous call to the Add XML Web service method.
        Dim iTotal As Integer = math.EndAdd(result)
        
        Total.Text = "Total: " & iTotal.ToString()
    End Sub 'EnterBtn_Click
 
  </script>
 
    <body>
       <form action="MathClient.aspx" runat=server>
           
          Enter the two numbers you want to add and then press the Total button.
          <p>
          Number 1: <asp:textbox id="Num1" runat=server/>  +
          Number 2: <asp:textbox id="Num2" runat=server/> =
          <asp:button text="Total" Onclick="EnterBtn_Click" runat=server/>
          <p>
          <asp:label id="Total"  runat=server/>
          
       </form>
    </body>
 </html>

Nell'esempio di codice seguente viene illustrata una classe proxy generata dallo strumento Web Services Description Language (WSDL. exe) Math per il servizio Web XML riportato di seguito.The following code example is a proxy class generated by the Web Services Description Language tool (Wsdl.exe) for the Math XML Web service below. All'interno BeginAdd del metodo della classe proxy, il BeginInvoke metodo avvia una chiamata Add asincrona del metodo di servizio Web XML.Within the BeginAdd method of the proxy class, the BeginInvoke method starts an asynchronous invocation of the Add XML Web service method.

namespace MyMath
{
   [XmlRootAttribute("snippet1>",Namespace="http://MyMath/",IsNullable=false)]
   public ref class Math: public HttpGetClientProtocol
   {
   public:
      Math()
      {
         this->Url = "http://www.contoso.com/math.asmx";
      }

      [HttpMethodAttribute(System::Web::Services::Protocols::XmlReturnReader::typeid,
      System::Web::Services::Protocols::UrlParameterWriter::typeid)]
      int Add( String^ num1, String^ num2 )
      {
         array<Object^>^temp0 = {num1,num2};
         return  *dynamic_cast<int^>(this->Invoke( "Add", String::Concat( this->Url, "/Add" ), temp0 ));
      }

      IAsyncResult^ BeginAdd( String^ num1, String^ num2, AsyncCallback^ callback, Object^ asyncState )
      {
         array<Object^>^temp1 = {num1,num2};
         return this->BeginInvoke( "Add", String::Concat( this->Url, "/Add" ), temp1, callback, asyncState );
      }

      int EndAdd( IAsyncResult^ asyncResult )
      {
         return  *dynamic_cast<int^>(this->EndInvoke( asyncResult ));
      }
   };
}
namespace MyMath
{
    [XmlRootAttribute("int", Namespace = "http://MyMath/", IsNullable = false)]
    public class Math : HttpGetClientProtocol
    {
        public Math()
        {
            this.Url = "http://www.contoso.com/math.asmx";
        }
        
        [HttpMethodAttribute(typeof(System.Web.Services.Protocols.XmlReturnReader), 
            typeof(System.Web.Services.Protocols.UrlParameterWriter))]
        public int Add(int num1, int num2)
        {
            return ((int)(this.Invoke("Add", ((this.Url) + ("/Add")), 
                new object[] { num1, num2 })));
        }
        
        public IAsyncResult BeginAdd(int num1, int num2, AsyncCallback callback, object asyncState)
        {
            return this.BeginInvoke("Add", ((this.Url) + ("/Add")), 
                new object[] { num1, num2 }, callback, asyncState);
        }
        
        public int EndAdd(IAsyncResult asyncResult)
        {
            return ((int)(this.EndInvoke(asyncResult)));
        }
    }
}
Namespace MyMath
    <XmlRootAttribute("int", Namespace := "http://MyMath/", IsNullable := False)> _
    Public Class Math
        Inherits HttpGetClientProtocol
        
        Public Sub New()
            Me.Url = "http://www.contoso.com/math.asmx"
        End Sub
        
        <HttpMethodAttribute(GetType(XmlReturnReader), GetType(UrlParameterWriter))> _
        Public Function Add(num1 As String, num2 As String) As Integer
            Return CInt(Me.Invoke("Add", Me.Url + "/Add", New Object() {num1, num2}))
        End Function 'Add
        
        
        Public Function BeginAdd(num1 As String, num2 As String, callback As AsyncCallback, asyncState As Object) As IAsyncResult
            Return Me.BeginInvoke("Add", Me.Url + "/Add", New Object() {num1, num2}, callback, asyncState)
        End Function 'BeginAdd
        
        
        Public Function EndAdd(asyncResult As IAsyncResult) As Integer
            Return CInt(Me.EndInvoke(asyncResult))
        End Function 'EndAdd
    End Class
End Namespace 'MyMath

L'esempio di codice seguente è Math il servizio Web XML dal quale è stata creata la classe proxy precedente.The following code example is the Math XML Web service, from which the preceding proxy class was created.

<%@ WebService Language="C#" Class="Math"%>
 using System.Web.Services;
 using System;
 
 public class Math {
      [ WebMethod ]
      public int Add(int num1, int num2) {
          return num1+num2;
          }
 }
<%@ WebService Language="VB" Class="Math"%>
Imports System.Web.Services
Imports System

Public Class Math
    <WebMethod()> _
    Public Function Add(num1 As Integer, num2 As Integer) As Integer
        Return num1 + num2
    End Function 'Add
End Class 'Math

Commenti

Il methodName parametro viene usato per trovare i tipi di parametri e i valori restituiti del metodo che richiama il BeginInvoke metodo.The methodName parameter is used to find the types of the parameters and return values of the method that is invoking the BeginInvoke method. Viene inoltre usato per trovare attributi personalizzati che potrebbero essere stati aggiunti al metodo.It is also used to find custom attributes that may have been added to the method. SoapDocumentMethodAttribute, SoapRpcMethodAttribute eXmlElementAttribute forniscono informazioni aggiuntive sul metodo derivato necessario per il protocollo http.SoapDocumentMethodAttribute, SoapRpcMethodAttribute, and XmlElementAttribute provide additional information on the derived method that is required for the HTTP protocol.

asyncStateviene passato callback in ed è incluso nell'oggetto IAsyncResult restituito dal BeginInvoke metodo.asyncState is passed into callback and is included in the IAsyncResult that is returned from the BeginInvoke method. È utile per passare informazioni dal contesto della chiamata asincrona alla gestione del risultato asincrono in callback.It is useful for passing information from the context of the asynchronous call to the handling of the asynchronous result in callback.

Si applica a

Vedi anche