Aracılığıyla paylaş


HttpSimpleClientProtocol.BeginInvoke Yöntem

Tanım

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

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

Parametreler

methodName
String

XML Web hizmeti yönteminin adı.

requestUrl
String

oluşturulurken WebRequestkullanılacak URL.

parameters
Object[]

XML Web hizmeti yöntemine 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 yöntem çağrısı tamamlandığında çağıracak temsilci. ise callback null, temsilci çağrılmıyordur.

asyncState
Object

İstemci tarafından sağlanan ek bilgiler.

Döndürülenler

IAsyncResult

IAsyncResult XML Web hizmeti yönteminden EndInvoke(IAsyncResult) dönüş değerlerini almak için yöntemine geçirilebilen bir.

Özel durumlar

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

Örnekler

Aşağıdaki kod örneği, adlı Mathbir XML Web hizmetini çağıran bir ASP.NET Web Formudur. İşlevin EnterBtn_Click içinde, Web Formu XML Web hizmeti yönteminin zaman uyumsuz çağrısını Add başlatır ve tamamlar.

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

Aşağıdaki kod örneği, aşağıdaki 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 yöntemi, BeginInvoke XML Web hizmeti yönteminin zaman uyumsuz çağrısını Add başlatır.

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

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

Açıklamalar

methodName parametresi, parametre türlerini bulmak ve yöntemini çağıran BeginInvoke yöntemin dönüş değerlerini bulmak için kullanılır. Yöntemine eklenmiş olabilecek özel öznitelikleri bulmak için de kullanılır. SoapDocumentMethodAttribute, SoapRpcMethodAttributeve XmlElementAttribute TÜRETilmiş yöntem hakkında HTTP protokolü için gerekli olan ek bilgileri sağlayın.

asyncStateiçine callback geçirilir ve yönteminden BeginInvoke döndürülen öğesine dahil IAsyncResult edilir. Zaman uyumsuz çağrı bağlamından içindeki zaman uyumsuz sonucun callbackişlenmesine bilgi geçirmek için yararlıdır.

Şunlara uygulanır

Ayrıca bkz.