SoapHttpClientProtocol.BeginInvoke メソッド

定義

SOAP を使用して XML Web サービス メソッドの非同期呼び出しを開始します。

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

パラメーター

methodName
String

BeginInvoke(String, Object[], AsyncCallback, Object) メソッドを呼び出す派生クラスの XML Web サービス メソッドの名前。

parameters
Object[]

XML Web サービスに渡すパラメーターを含むオブジェクトの配列。 配列内の値の順序は、派生クラスの呼び出し元メソッドのパラメーターの順序に対応します。

callback
AsyncCallback

非同期呼び出しが完了したときに呼び出すデリゲート。 callbacknullされている場合、デリゲートは呼び出されません。

asyncState
Object

呼び出し元によって提供される追加情報。

返品

リモート メソッド呼び出しから戻り値を取得するためにEndInvoke(IAsyncResult) メソッドに渡されるIAsyncResult

例外

要求はサーバー コンピューターに到達しましたが、正常に処理されませんでした。

オブジェクトの現在の状態に対して要求が無効でした。

ネットワークへのアクセス中にエラーが発生しました。

次のコード例は、 Math XML Web サービスの Web サービス記述言語ツール (Wsdl.exe) によって生成されるプロキシ クラスです。 プロキシ クラスの BeginAdd メソッド内で、 BeginInvoke メソッドは、 Add XML Web サービス メソッドへの非同期呼び出しを開始します。

#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

次のコード例は、上記のプロキシ クラスが作成された Math XML Web サービスです。

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

注釈

通常、XML Web サービス用に独自のプロキシ クラスを構築する場合を除き、 BeginInvoke メソッドを直接呼び出す必要はありません。

サービスの説明から Web サービス記述言語ツール (Wsdl.exe) によって生成されたプロキシ クラスは、XML Web サービス メソッドを同期的に呼び出すプロキシ クラスから派生した名前として XML Web サービス メソッドを公開します。 XML Web サービス メソッドを非同期的に呼び出すために、各 XML Web サービス メソッドのプロキシ クラスに 2 つのメソッドが追加されます。1 つは、 Begin プレフィックスが XML Web サービス メソッドの名前に追加され、1 つは End プレフィックスが追加されています。

プロキシ クラスは、 BeginInvoke メソッドを呼び出して、XML Web サービス メソッドの非同期呼び出しを開始します。 たとえば、XML Web サービスが Add という名前の XML Web サービス メソッドを公開する場合、プロキシ クラスには、XML Web サービス メソッドの呼び出しを開始するための BeginAdd という名前のメソッドが含まれます。 BeginAddのコード内で、BeginInvoke メソッドの呼び出しが行われ、結果はAddの予期される戻り値の型に配置されます。

methodNameは、メソッドに追加された可能性があるカスタム属性 (SoapDocumentMethodAttributeなど) を検索するために使用されます。 SoapDocumentMethodAttribute は、SOAP プロトコルに必要な派生メソッドに関する追加情報を提供します。

asyncStatecallbackに渡され、BeginInvoke メソッドから返されるIAsyncResultに含まれます。 asyncState パラメーターを使用すると、callback パラメーターで指定された非同期呼び出しのコンテキストに関する情報を、結果を処理するデリゲートに渡すことができます。

適用対象

こちらもご覧ください