SoapHttpClientProtocol.BeginInvoke メソッド

定義

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

C#
protected IAsyncResult BeginInvoke (string methodName, object[] parameters, AsyncCallback callback, object asyncState);

パラメーター

methodName
String

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

parameters
Object[]

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

callback
AsyncCallback

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

asyncState
Object

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

戻り値

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

例外

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

リクエストが、オブジェクトの現在の状態に対して有効でなかった。

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

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

C#

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]));
        }
    }
}

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

ASP.NET (C#)
<%@ 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;
    }
 }

注釈

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

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

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

適用対象

製品 バージョン
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

こちらもご覧ください