SoapHttpClientProtocol.BeginInvoke(String, Object[], AsyncCallback, Object) メソッド


SOAP を使用して XML Web サービス メソッドの非同期呼び出しを開始します。Starts an asynchronous invocation of an XML Web service method using SOAP.

 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



BeginInvoke(String, Object[], AsyncCallback, Object) メソッドを呼び出している、派生クラス内の XML Web サービス メソッドの名前。The name of the XML Web service method in the derived class that is invoking the BeginInvoke(String, Object[], AsyncCallback, Object) method.


XML Web サービスに渡すパラメーターを格納しているオブジェクトの配列。An array of objects containing the parameters to pass to the XML Web service. 配列内の値の順序は、呼び出し元の派生クラス メソッドに渡されたパラメーターの順序に対応しています。The order of the values in the array correspond to the order of the parameters in the calling method of the derived class.


非同期呼び出しが完了したときに呼び出されるデリゲート。The delegate to call when the asynchronous invoke is complete. callbacknull の場合、このデリゲートは呼び出されません。If callback is null, the delegate is not called.


呼び出し元によって提供される補足情報。Extra information supplied by the caller.


リモート メソッドの呼び出しからの戻り値を取得するために、IAsyncResult メソッドに渡される EndInvoke(IAsyncResult)An IAsyncResult that is passed to the EndInvoke(IAsyncResult) method to obtain the return values from the remote method call.


要求はサーバー コンピューターに到達しましたが、正常に処理されませんでした。The request reached the server computer, but was not processed successfully.

リクエストが、オブジェクトの現在の状態に対して有効でなかった。The request was not valid for the object's current state.

ネットワークへのアクセス中にエラーが発生しました。An error occurred while accessing the network.

次のコード例は、 Math XML web サービスの web サービス記述言語ツール (wsdl.exe) によって生成されるプロキシクラスです。The following code example is a proxy class generated by the Web Services Description Language tool (Wsdl.exe) for the Math XML Web service. プロキシクラスのBeginInvoke Addメソッド内で、メソッドは XML Web サービスメソッドへの非同期呼び出しを開始します。 BeginAddWithin the BeginAdd method of the proxy class, the BeginInvoke method is starting an asynchronous invocation to the Add XML Web service method.

#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

   public ref class MyMath: public System::Web::Services::Protocols::SoapHttpClientProtocol

         this->Url = "";

      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::IAsyncResult^ BeginAdd( int num1, int num2, System::AsyncCallback^ callback, Object^ asyncState )
         array<Object^>^temp2 = {num1,num2};
         return this->BeginInvoke( "Add", temp2, callback, asyncState );

      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="")]
    public class MyMath : System.Web.Services.Protocols.SoapHttpClientProtocol {
        public MyMath() {
            this.Url = "";
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace="", ResponseNamespace="", 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,
            return ((int)(results[0]));
        public System.IAsyncResult BeginAdd(int num1, int num2, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("Add", new object[] {num1,
                        num2}, callback, asyncState);
        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]:="")>  _
    Public Class MyMath
        Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
        <System.Diagnostics.DebuggerStepThroughAttribute()>  _
        Public Sub New()
            Me.Url = ""
        End Sub
        <System.Diagnostics.DebuggerStepThroughAttribute(),  _
         System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace:="", ResponseNamespace:="", 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 サービスです。The following code example is the Math XML Web service, from which the preceding proxy class was created.

<%@ WebService Language="C#" Class="MyMath"%>
 using System.Web.Services;
 using System;
 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:="")> _
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独自のプロキシクラスを作成していない限り、メソッドを直接呼び出すことはありません。Typically, you would not call the BeginInvoke method directly, unless you were building your own proxy class for an XML Web service.

サービスの説明から Web サービス記述言語ツール (Wsdl.exe) によって生成されるプロキシクラスでは、xml web サービスメソッドをプロキシクラスから派生した名前として公開し、XML Web サービスメソッドを同期的に呼び出すことができます。A proxy class generated by the Web Services Description Language tool (Wsdl.exe) from a Service Description exposes the XML Web service methods as names derived from the proxy class to call the XML Web service methods synchronously. Xml web サービスメソッドを非同期に呼び出すには、各 xml web サービスメソッドのプロキシクラスに2つの追加のメソッドを追加Beginします。1つは、xml web サービスメソッドの名前にプレフィックスEndを追加し、もう1つはプレフィックスを追加したものです。To call the XML Web service methods asynchronously, two additional methods are added to the proxy class for each XML Web service method, one with the Begin prefix added to the name of the XML Web service method and one with the End prefix added.

プロキシクラスは、 BeginInvokeメソッドを呼び出して、XML Web サービスメソッドへの非同期呼び出しを開始します。The proxy class calls the BeginInvoke method to start an asynchronous invocation call to the XML Web service method. たとえば、xml web サービスがという名前Addの xml web サービスメソッドを公開する場合、プロキシクラスには、xml web サービスメソッドへの呼び出しを開始するためのという名前BeginAddのメソッドが含まれています。For example, if an XML Web service exposes an XML Web service method named Add, the proxy class contains a method named BeginAdd, for starting an invocation to the XML Web service method. のコードBeginAdd内では、 BeginInvokeメソッドへの呼び出しが行われ、結果はのAdd予期される戻り値の型に配置されます。Within the code for the BeginAdd, a call is made to the BeginInvoke method and the results are placed into the expected return type for Add.

methodName 、などのメソッドSoapDocumentMethodAttributeに追加されたカスタム属性を検索するために使用されます。The methodName is used to find the custom attributes which may have been added to the method, such as SoapDocumentMethodAttribute. SoapDocumentMethodAttributeSOAP プロトコルに必要な派生メソッドに関する追加情報を提供します。SoapDocumentMethodAttribute provides additional information about the derived method that is required for the SOAP protocol.

asyncStateはにcallback渡され、 BeginInvokeメソッドから返さIAsyncResultれるに含まれています。asyncState is passed into callback and is included in the IAsyncResult that is returned from the BeginInvoke method. パラメーターを使用すると、 callbackパラメーターで指定された非同期呼び出しのコンテキストに関する情報を、結果を処理するデリゲートに渡すことができます。 asyncStateThe asyncState parameter can be used to pass information about the context of the asynchronous call, specified in the callback parameter, to the delegate that handles the result.