HttpSimpleClientProtocol.BeginInvoke Metódus

Definíció

Elindítja egy XML-webszolgáltatás metódusának aszinkron meghívását.

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

Paraméterek

methodName
String

Az XML Web Service metódus neve.

requestUrl
String

A létrehozáskor WebRequesthasználandó URL-cím.

parameters
Object[]

Az XML webszolgáltatás metódusának átadni kívánt paramétereket tartalmazó objektumtömb. A tömb értékeinek sorrendje megfelel a származtatott osztály hívó metódusában szereplő paraméterek sorrendjének.

callback
AsyncCallback

Az aszinkron metódushívás befejezésekor meghívandó meghatalmazott. Ha callback igen null, a meghatalmazott nem lesz meghívva.

asyncState
Object

Az ügyfél által megadott további információk.

Válaszok

A IAsyncResult metódusnak EndInvoke(IAsyncResult) átadható érték, amely lekérheti a visszatérési értékeket az XML Web Service metódusból.

Kivételek

A kérés elérte a kiszolgáló számítógépét, de a feldolgozás nem sikerült.

Példák

Az alábbi példakód egy ASP.NET webűrlap, amely meghív egy Math nevű XML-webszolgáltatást. A függvényen belül a EnterBtn_Click webes űrlap elindítja és befejezi az XML webszolgáltatás metódusának aszinkron Add meghívását.

<%@ 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>

Az alábbi példakód egy proxyosztály, amelyet a Web Services Description Language eszköz (Wsdl.exe) hoz létre az Math alábbi XML-webszolgáltatáshoz. BeginAdd A proxyosztály metódusán belül a BeginInvoke metódus elindítja az XML Web Service metódus aszinkron Add meghívását.

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

A következő példakód az Math XML-webszolgáltatás, amelyből az előző proxyosztály létrejött.

<%@ 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

Megjegyzések

A methodName paraméter a paraméterek típusainak megkeresésére és a metódust invokáló metódus értékeinek visszaadására BeginInvoke szolgál. A metódushoz esetleg hozzáadott egyéni attribútumok megkeresésére is használható. SoapDocumentMethodAttribute, SoapRpcMethodAttributemajd XmlElementAttribute adjon meg további információt a HTTP protokollhoz szükséges származtatott módszerről.

asyncState át lesz adva callback , és szerepel a IAsyncResult metódusból BeginInvoke visszaadott fájlban. Hasznos, ha az aszinkron hívás környezetéből adatokat ad át az aszinkron eredmény callbackkezelésére.

A következőre érvényes:

Lásd még