SoapHttpClientProtocol.EndInvoke(IAsyncResult) SoapHttpClientProtocol.EndInvoke(IAsyncResult) SoapHttpClientProtocol.EndInvoke(IAsyncResult) SoapHttpClientProtocol.EndInvoke(IAsyncResult) Method

定義

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

protected:
 cli::array <System::Object ^> ^ EndInvoke(IAsyncResult ^ asyncResult);
protected object[] EndInvoke (IAsyncResult asyncResult);
member this.EndInvoke : IAsyncResult -> obj[]
Protected Function EndInvoke (asyncResult As IAsyncResult) As Object()

パラメーター

戻り値

Object[]

派生クラス メソッドの戻り値と、参照渡しパラメーターまたは out パラメーターを格納しているオブジェクトの配列。An array of objects that contains the return value and any by-reference or out parameters of the derived class method.

例外

asyncResultBeginInvoke(String, Object[], AsyncCallback, Object) メソッドからの戻り値ではありません。asyncResult is not the return value from the BeginInvoke(String, Object[], AsyncCallback, Object) method.

要求はサーバー コンピューターに到達しましたが、正常に処理されませんでした。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 サービスの wsdl.exe によって生成されるプロキシクラスです。The following code example is a proxy class generated by Wsdl.exe for the Math XML Web service. プロキシクラスのEndInvoke Addメソッド内で、メソッドは XML Web サービスメソッドへの非同期呼び出しを完了します。 EndAddWithin the EndAdd method of the proxy class, the EndInvoke method completes the 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
{

   [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^>^temp0 = {num1,num2};
         array<Object^>^results = this->Invoke( "Add", temp0 );
         return  *dynamic_cast<int^>(results[ 0 ]);
      }


      [System::Diagnostics::DebuggerStepThroughAttribute]
      System::IAsyncResult^ BeginAdd( int num1, int num2, System::AsyncCallback^ callback, Object^ asyncState )
      {
         array<Object^>^temp1 = {num1,num2};
         return this->BeginInvoke( "Add", temp1, 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 サービスです。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;
 
 [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 サービス用にEndInvoke独自のプロキシクラスを作成していない限り、メソッドを直接呼び出すことはありません。Typically, you would not call the EndInvoke method directly, unless you were building your own proxy class for an XML Web service.

Xml web サービスの Web サービス記述言語ツール (Wsdl.exe) によって生成されるプロキシクラスは、xml web サービスメソッドを同期的に呼び出すために、プロキシクラスの名前として XML Web サービスメソッドを公開します。A proxy class generated by the Web Services Description Language tool (Wsdl.exe) for an XML Web service exposes the XML Web service methods as names off of the proxy class for calling the XML Web service methods synchronously. Xml web サービスメソッドを非同期で呼び出すには、xml web サービスメソッドの名前にBeginプレフィックスを追加し、もう 1 Endつにプレフィックスが追加された2つのメソッドを追加します。For calling 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.

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

適用対象

こちらもご覧ください