SoapHttpClientProtocol.BeginInvoke Metódus

Definíció

Elindítja egy XML-webszolgáltatás-metódus aszinkron meghívását a SOAP használatával.

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

Paraméterek

methodName
String

Az XML webszolgáltatás metódusának neve a metódust megivó BeginInvoke(String, Object[], AsyncCallback, Object) származtatott osztályban.

parameters
Object[]

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

callback
AsyncCallback

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

asyncState
Object

A hívó által megadott további információk.

Válaszok

A IAsyncResult metódusnak EndInvoke(IAsyncResult) átadott érték, amely a távoli metódushívásból kapja meg a visszatérési értékeket.

Kivételek

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

A kérés érvénytelen volt az objektum aktuális állapotára vonatkozóan.

Hiba történt a hálózat elérése közben.

Példák

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

#using <System.Web.Services.dll>
#using <System.Xml.dll>
#using <System.dll>

using namespace System::Diagnostics;
using namespace System::Xml::Serialization;
using namespace System;
using namespace System::Web::Services::Protocols;
using namespace System::Web::Services;

namespace MyMath
{

   [System::Web::Services::WebServiceBindingAttribute(Name="MyMathSoap",Namespace="http://www.contoso.com/")]
   public ref class MyMath: public System::Web::Services::Protocols::SoapHttpClientProtocol
   {
   public:

      [System::Diagnostics::DebuggerStepThroughAttribute]
      MyMath()
      {
         this->Url = "http://www.contoso.com/math.asmx";
      }


      [System::Diagnostics::DebuggerStepThroughAttribute]
      [System::Web::Services::Protocols::SoapDocumentMethodAttribute("http://www.contoso.com/Add",
      RequestNamespace="http://www.contoso.com/",ResponseNamespace="http://www.contoso.com/",
      Use=System::Web::Services::Description::SoapBindingUse::Literal,
      ParameterStyle=System::Web::Services::Protocols::SoapParameterStyle::Wrapped)]
      int Add( int num1, int num2 )
      {
         array<Object^>^temp1 = {num1,num2};
         array<Object^>^results = this->Invoke( "Add", temp1 );
         return  *dynamic_cast<int^>(results[ 0 ]);
      }


      [System::Diagnostics::DebuggerStepThroughAttribute]
      System::IAsyncResult^ BeginAdd( int num1, int num2, System::AsyncCallback^ callback, Object^ asyncState )
      {
         array<Object^>^temp2 = {num1,num2};
         return this->BeginInvoke( "Add", temp2, callback, asyncState );
      }


      [System::Diagnostics::DebuggerStepThroughAttribute]
      int EndAdd( System::IAsyncResult^ asyncResult )
      {
         array<Object^>^results = this->EndInvoke( asyncResult );
         return  *dynamic_cast<int^>(results[ 0 ]);
      }

   };

}


namespace MyMath {
    using System.Diagnostics;
    using System.Xml.Serialization;
    using System;
    using System.Web.Services.Protocols;
    using System.Web.Services;

    [System.Web.Services.WebServiceBindingAttribute(Name="MyMathSoap", Namespace="http://www.contoso.com/")]
    public class MyMath : System.Web.Services.Protocols.SoapHttpClientProtocol {

        [System.Diagnostics.DebuggerStepThroughAttribute()]
        public MyMath() {
            this.Url = "http://www.contoso.com/math.asmx";
        }

        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.contoso.com/Add", RequestNamespace="http://www.contoso.com/", ResponseNamespace="http://www.contoso.com/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public int Add(int num1, int num2) {
            object[] results = this.Invoke("Add", new object[] {num1,
                        num2});
            return ((int)(results[0]));
        }

        [System.Diagnostics.DebuggerStepThroughAttribute()]
        public System.IAsyncResult BeginAdd(int num1, int num2, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("Add", new object[] {num1,
                        num2}, callback, asyncState);
        }

        [System.Diagnostics.DebuggerStepThroughAttribute()]
        public int EndAdd(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((int)(results[0]));
        }
    }
}

Option Strict On
Option Explicit On

Imports System.Diagnostics
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Xml.Serialization

Namespace MyMath
    
    <System.Web.Services.WebServiceBindingAttribute(Name:="MyMathSoap", [Namespace]:="http://www.contoso.com/")>  _
    Public Class MyMath
        Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
        
        <System.Diagnostics.DebuggerStepThroughAttribute()>  _
        Public Sub New()
            MyBase.New
            Me.Url = "http://www.contoso.com/math.asmx"
        End Sub
        
        <System.Diagnostics.DebuggerStepThroughAttribute(),  _
         System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.contoso.com/Add", RequestNamespace:="http://www.contoso.com/", ResponseNamespace:="http://www.contoso.com/", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)>  _
        Public Function Add(ByVal num1 As Integer, ByVal num2 As Integer) As Integer
            Dim results() As Object = Me.Invoke("Add", New Object() {num1, num2})
            Return CType(results(0),Integer)
        End Function
        
        <System.Diagnostics.DebuggerStepThroughAttribute()>  _
        Public Function BeginAdd(ByVal num1 As Integer, ByVal num2 As Integer, ByVal callback As System.AsyncCallback, ByVal asyncState As Object) As System.IAsyncResult
            Return Me.BeginInvoke("Add", New Object() {num1, num2}, callback, asyncState)
        End Function
        
        <System.Diagnostics.DebuggerStepThroughAttribute()>  _
        Public Function EndAdd(ByVal asyncResult As System.IAsyncResult) As Integer
            Dim results() As Object = Me.EndInvoke(asyncResult)
            Return CType(results(0),Integer)
        End Function
    End Class
End Namespace

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="MyMath"%>
 using System.Web.Services;
 using System;
 
 [WebService(Namespace="http://www.contoso.com/")] 
 public class MyMath {

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

<WebService(Namespace:="http://www.contoso.com/")> _
Public Class MyMath
    <WebMethod()> _
    Public Function Add(num1 As Integer, num2 As Integer) As Integer
        Return num1 + num2
    End Function 'Add
End Class 'Math

Megjegyzések

Általában nem hívná meg közvetlenül a BeginInvoke metódust, kivéve, ha saját proxyosztályt hoz létre egy XML-webszolgáltatáshoz.

A Web Services Description Language eszköz (Wsdl.exe) által a szolgáltatásleírásból létrehozott proxyosztály az XML-webszolgáltatás metódusait a proxyosztályból származó nevekként teszi elérhetővé az XML-webszolgáltatás-metódusok szinkron meghívásához. Az XML webszolgáltatás metódusainak aszinkron meghívásához a rendszer két további metódust ad hozzá a proxyosztályhoz minden XML-webszolgáltatás-metódushoz, egyet az Begin XML webszolgáltatás-metódus nevéhez hozzáadott előtaggal, egyet pedig a End hozzáadott előtaggal.

A proxyosztály meghívja a BeginInvoke metódust egy aszinkron hívás indítására az XML Web Service metódushoz. Ha például egy XML-webszolgáltatás elérhetővé tesz egy XML Web Service metódust, Adda proxyosztály egy névvel ellátott BeginAddmetódust tartalmaz, amely meghívást indít az XML-webszolgáltatás metódusához. A kódon BeginAddbelül a rendszer meghívja a BeginInvoke metódust, és az eredmények a várt visszatérési típusba kerülnek Add.

A methodName metódushoz esetleg hozzáadott egyéni attribútumok megkeresésére szolgál, például SoapDocumentMethodAttribute. SoapDocumentMethodAttribute a SOAP protokollhoz szükséges származtatott módszerről nyújt további információt.

asyncState át lesz adva callback , és szerepel a IAsyncResult metódusból BeginInvoke visszaadott fájlban. A asyncState paraméter használatával adatokat adhat át a paraméterben callback megadott aszinkron hívás környezetéről az eredményt kezelő meghatalmazottnak.

A következőre érvényes:

Lásd még