SoapHttpClientProtocol.EndInvoke メソッド
SOAP を使用して XML Web サービス メソッドの非同期呼び出しを終了します。
Protected Function EndInvoke( _
ByVal asyncResult As IAsyncResult _) As Object()
[C#]
protected object[] EndInvoke(IAsyncResultasyncResult);
[C++]
protected: Object* EndInvoke(IAsyncResult* asyncResult) __gc[];
[JScript]
protected function EndInvoke(
asyncResult : IAsyncResult) : Object[];
パラメータ
- asyncResult
BeginInvoke から返された IAsyncResult 。
戻り値
派生クラス メソッドの戻り値と、参照渡しパラメータまたは out パラメータを格納しているオブジェクトの配列。
例外
例外の種類 | 条件 |
---|---|
ArgumentException | asyncResult が BeginInvoke からの戻り値ではありません。 |
SoapException | 要求はサーバー コンピュータに到達しましたが、正常に処理されませんでした。 |
解説
XML Web サービス用に独自のプロキシ クラスを構築した場合を除き、通常、 EndInvoke メソッドを直接呼び出すことはありません。
XML Web サービス用に Wsdl.exe ユーティリティによって生成されたプロキシ クラスは、XML Web サービス メソッドを同期的に呼び出すためのプロキシ クラスの名前として XML Web サービス メソッドを公開します。XML Web サービス メソッドを非同期的に呼び出す場合は、各 XML Web サービス メソッドのプロキシ クラスに 2 つのメソッドが追加されます。XML Web サービス メソッドの名前に Begin
プリフィックスが付けられたメソッドと End
プリフィックスが付けられたメソッドの 2 つです。プロキシ クラスは EndInvoke メソッドを呼び出して、XML Web サービス メソッドへの非同期呼び出しを完了します。たとえば、XML Web サービスが Add
という名前の XML Web サービス メソッドを公開する場合、プロキシ クラスには、その XML Web サービス メソッドの非同期呼び出しを完了するための EndAdd
という名前のメソッドが含まれます。 EndAdd
のコードの中で、 EndInvoke が呼び出され、その結果は強制的に Add
に対する有効な戻り値の型に変換されます。
使用例
[Visual Basic, C#, C++] Wsdl.exe ユーティリティによって、下の Math
XML Web サービス用に生成されるプロキシ クラスの例を次に示します。プロキシ クラスの EndAdd
メソッドの中で、 EndInvoke メソッド は Add
XML Web サービス メソッドの非同期呼び出しを完了しています。
Option Strict On
Option Explicit On
Imports System
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]:="https://www.contoso.com/")> _
Public Class MyMath
Inherits System.Web.Services.Protocols.SoapHttpClientProtocol
<System.Diagnostics.DebuggerStepThroughAttribute()> _
Public Sub New()
MyBase.New
Me.Url = "https://www.contoso.com/math.asmx"
End Sub
<System.Diagnostics.DebuggerStepThroughAttribute(), _
System.Web.Services.Protocols.SoapDocumentMethodAttribute("https://www.contoso.com/Add", RequestNamespace:="https://www.contoso.com/", ResponseNamespace:="https://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
[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="https://www.contoso.com/")]
public class MyMath : System.Web.Services.Protocols.SoapHttpClientProtocol {
[System.Diagnostics.DebuggerStepThroughAttribute()]
public MyMath() {
this.Url = "https://www.contoso.com/math.asmx";
}
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("https://www.contoso.com/Add", RequestNamespace="https://www.contoso.com/", ResponseNamespace="https://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]));
}
}
}
[C++]
#using <mscorlib.dll>
#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=S"MyMathSoap", Namespace=S"https://www.contoso.com/")]
public __gc class MyMath : public System::Web::Services::Protocols::SoapHttpClientProtocol {
public:
[System::Diagnostics::DebuggerStepThroughAttribute]
MyMath() {
this->Url = S"https://www.contoso.com/math.asmx";
}
[System::Diagnostics::DebuggerStepThroughAttribute]
[System::Web::Services::Protocols::SoapDocumentMethodAttribute(S"https://www.contoso.com/Add", RequestNamespace=S"https://www.contoso.com/", ResponseNamespace=S"https://www.contoso.com/", Use=System::Web::Services::Description::SoapBindingUse::Literal, ParameterStyle=System::Web::Services::Protocols::SoapParameterStyle::Wrapped)]
int Add(int num1, int num2) {
Object* temp0 [] = {__box(num1), __box(num2)};
Object* results[] = this->Invoke(S"Add", temp0);
return *dynamic_cast<__box int*>(results[0]);
}
[System::Diagnostics::DebuggerStepThroughAttribute]
System::IAsyncResult* BeginAdd(int num1, int num2, System::AsyncCallback* callback, Object* asyncState) {
Object* temp1 [] = {__box(num1), __box(num2)};
return this->BeginInvoke(S"Add", temp1, callback, asyncState);
}
[System::Diagnostics::DebuggerStepThroughAttribute]
int EndAdd(System::IAsyncResult* asyncResult) {
Object* results[] = this->EndInvoke(asyncResult);
return *dynamic_cast<__box int*>(results[0]);
}
};
}
[Visual Basic, C#, C++] 上のプロキシ クラスの作成元の Math
XML Web サービスの例を次に示します。
<%@ WebService Language="VB" Class="MyMath"%>
Imports System.Web.Services
Imports System
<WebService(Namespace:="https://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
[C#]
<%@ WebService Language="C#" Class="MyMath"%>
using System.Web.Services;
using System;
[WebService(Namespace="https://www.contoso.com/")]
public class MyMath {
[ WebMethod ]
public int Add(int num1, int num2) {
return num1+num2;
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
参照
SoapHttpClientProtocol クラス | SoapHttpClientProtocol メンバ | System.Web.Services.Protocols 名前空間 | IAsyncResult | BeginInvoke | WebClientProtocol