Aracılığıyla paylaş


SoapHttpClientProtocol.BeginInvoke Yöntem

Tanım

SOAP kullanarak bir XML Web hizmeti yönteminin zaman uyumsuz çağrısını başlatır.

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

Parametreler

methodName
String

Yöntemini çağıran türetilmiş sınıftaki XML Web hizmeti yönteminin BeginInvoke(String, Object[], AsyncCallback, Object) adı.

parameters
Object[]

XML Web hizmetine geçirilmesi gereken parametreleri içeren bir nesne dizisi. Dizideki değerlerin sırası, türetilen sınıfın çağırma yöntemindeki parametrelerin sırasına karşılık gelir.

callback
AsyncCallback

Zaman uyumsuz çağırma tamamlandığında çağrılacak temsilci. ise callbacknull, temsilci çağrılmıyordur.

asyncState
Object

Arayan tarafından sağlanan ek bilgiler.

Döndürülenler

IAsyncResult Uzak yöntem çağrısından EndInvoke(IAsyncResult) dönüş değerlerini almak için yöntemine geçirilen bir.

Özel durumlar

İstek sunucu bilgisayarına ulaştı, ancak başarıyla işlenmedi.

İstek, nesnenin geçerli durumu için geçerli değildi.

Ağa erişilirken bir hata oluştu.

Örnekler

Aşağıdaki kod örneği, XML Web hizmeti için Math Web Hizmetleri Açıklama Dili aracı (Wsdl.exe) tarafından oluşturulan bir ara sunucu sınıfıdır. BeginAdd proxy sınıfının yöntemi içinde, BeginInvoke yöntemi XML Web hizmeti yöntemine Add zaman uyumsuz bir çağrı başlatılıyor.

#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şağıdaki kod örneği Math , önceki ara sunucu sınıfının oluşturulduğu XML Web hizmetidir.

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

Açıklamalar

Bir XML Web hizmeti için kendi proxy sınıfınızı oluşturmadığınız sürece genellikle yöntemini doğrudan çağırmazsınız BeginInvoke .

Hizmet Açıklaması'ndan Web Hizmetleri Açıklama Dili aracı (Wsdl.exe) tarafından oluşturulan bir ara sunucu sınıfı, XML Web hizmeti yöntemlerini, XML Web hizmeti yöntemlerini zaman uyumlu olarak çağırmak için ara sunucu sınıfından türetilen adlar olarak kullanıma sunar. XML Web hizmeti yöntemlerini zaman uyumsuz olarak çağırmak için, her XML Web hizmeti yöntemi için ara sunucu sınıfına, biri Begin XML Web hizmeti yönteminin adına ve biri End ön eki eklenmiş olmak üzere iki ek yöntem eklenir.

Ara sunucu sınıfı, XML Web hizmeti yöntemine zaman uyumsuz çağırma çağrısı başlatmak için yöntemini çağırır BeginInvoke . Örneğin, bir XML Web hizmeti adlı Addbir XML Web hizmeti yöntemini kullanıma sunarsa, ara sunucu sınıfı, XML Web hizmeti yöntemine çağrı başlatmak için adlı BeginAddbir yöntem içerir. için kod BeginAddiçinde yöntemine BeginInvoke bir çağrı yapılır ve sonuçlar için Addbeklenen dönüş türüne yerleştirilir.

methodName gibi yöntemine SoapDocumentMethodAttributeeklenmiş olabilecek özel öznitelikleri bulmak için kullanılır. SoapDocumentMethodAttribute , SOAP protokolü için gerekli olan türetilmiş yöntem hakkında ek bilgi sağlar.

asyncStateiçine geçirilir callback ve yönteminden döndürülen öğesine BeginInvoke dahil IAsyncResult edilir. asyncState parametresi, parametrede callback belirtilen zaman uyumsuz çağrının bağlamı hakkındaki bilgileri sonucu işleyen temsilciye geçirmek için kullanılabilir.

Şunlara uygulanır

Ayrıca bkz.