SoapHttpClientProtocol.BeginInvoke Metode

Definisi

Memulai pemanggilan asinkron metode layanan Web XML menggunakan SOAP.

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

Parameter

methodName
String

Nama metode layanan Web XML di kelas turunan yang memanggil BeginInvoke(String, Object[], AsyncCallback, Object) metode .

parameters
Object[]

Array objek yang berisi parameter untuk diteruskan ke layanan Web XML. Urutan nilai dalam array sesuai dengan urutan parameter dalam metode panggilan kelas turunan.

callback
AsyncCallback

Delegasi untuk memanggil ketika pemanggilan asinkron selesai. Jika callback adalah null, delegasi tidak dipanggil.

asyncState
Object

Informasi tambahan yang disediakan oleh pemanggil.

Mengembalikan

IAsyncResult Yang diteruskan ke EndInvoke(IAsyncResult) metode untuk mendapatkan nilai pengembalian dari panggilan metode jarak jauh.

Pengecualian

Permintaan mencapai komputer server, tetapi tidak berhasil diproses.

Permintaan tidak valid untuk status objek saat ini.

Terjadi kesalahan saat mengakses jaringan.

Contoh

Contoh kode berikut adalah kelas proksi yang dihasilkan oleh alat Bahasa Deskripsi Layanan Web (Wsdl.exe) untuk Math layanan Web XML. BeginAdd Dalam metode kelas proksi, BeginInvoke metode ini memulai pemanggilan asinkron ke Add metode layanan Web XML.

#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

Contoh kode berikut adalah Math layanan Web XML, tempat kelas proksi sebelumnya dibuat.

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

Keterangan

Biasanya, Anda tidak akan memanggil metode secara BeginInvoke langsung, kecuali Anda membangun kelas proksi Anda sendiri untuk layanan Web XML.

Kelas proksi yang dihasilkan oleh alat Bahasa Deskripsi Layanan Web (Wsdl.exe) dari Deskripsi Layanan mengekspos metode layanan Web XML sebagai nama yang berasal dari kelas proksi untuk memanggil metode layanan Web XML secara sinkron. Untuk memanggil metode layanan Web XML secara asinkron, dua metode tambahan ditambahkan ke kelas proksi untuk setiap metode layanan Web XML, satu dengan Begin awalan ditambahkan ke nama metode layanan Web XML dan satu dengan End awalan ditambahkan.

Kelas proksi memanggil BeginInvoke metode untuk memulai panggilan pemanggilan asinkron ke metode layanan Web XML. Misalnya, jika layanan Web XML mengekspos metode layanan Web XML bernama Add, kelas proksi berisi metode bernama BeginAdd, untuk memulai pemanggilan ke metode layanan Web XML. Dalam kode untuk BeginAdd, panggilan dilakukan ke BeginInvoke metode dan hasilnya ditempatkan ke dalam jenis pengembalian yang diharapkan untuk Add.

methodName digunakan untuk menemukan atribut kustom yang mungkin telah ditambahkan ke metode , seperti SoapDocumentMethodAttribute. SoapDocumentMethodAttribute memberikan informasi tambahan tentang metode turunan yang diperlukan untuk protokol SOAP.

asyncState diteruskan ke dalam callback dan disertakan dalam IAsyncResult yang dikembalikan dari BeginInvoke metode . Parameter asyncState dapat digunakan untuk meneruskan informasi tentang konteks panggilan asinkron, yang ditentukan dalam callback parameter, ke delegasi yang menangani hasilnya.

Berlaku untuk

Lihat juga