SoapHttpClientProtocol.EndInvoke(IAsyncResult) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
SOAP를 사용하여 XML Web services 메서드의 비동기 호출을 종료합니다.
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()
매개 변수
- asyncResult
- IAsyncResult
BeginInvoke(String, Object[], AsyncCallback, Object) 메서드에서 반환된 IAsyncResult입니다.
반환
- Object[]
파생 클래스 메서드의 반환 값과 By Reference 매개 변수 또는 out
매개 변수가 들어 있는 개체의 배열입니다.
예외
asyncResult
가 BeginInvoke(String, Object[], AsyncCallback, Object) 메서드의 반환 값이 아닌 경우
서버 컴퓨터에 요청이 도달했지만 성공적으로 처리되지 않은 경우
요청은 개체의 현재 상태에서 유효하지 않습니다.
네트워크에 액세스하는 동안 오류가 발생한 경우.
예제
다음 코드 예제는 XML 웹 서비스에 대 Math
한 Wsdl.exe 의해 생성 된 프록시 클래스입니다. EndAdd
프록시 클래스의 메서드 내에서 메서드는 EndInvoke XML 웹 서비스 메서드에 대한 비동기 호출을 Add
완료합니다.
#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
다음 코드 예제는 이전 프록시 클래스를 만든 XML 웹 서비스입니다 Math
.
<%@ 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 웹 서비스에 대한 고유한 프록시 클래스를 EndInvoke 빌드하지 않는 한 메서드를 직접 호출하지 않습니다.
XML 웹 서비스에 대한 웹 서비스 설명 언어 도구(Wsdl.exe)에서 생성된 프록시 클래스는 XML 웹 서비스 메서드를 동기적으로 호출하기 위해 프록시 클래스의 이름으로 XML 웹 서비스 메서드를 노출합니다. XML 웹 서비스 메서드를 비동기적으로 호출하는 경우 각 XML 웹 서비스 메서드의 프록시 클래스에 두 개의 추가 메서드가 추가됩니다. 하나는 Begin
접두사로 XML 웹 서비스 메서드의 이름에 추가되고 다른 하나는 End
접두사로 추가됩니다.
프록시 클래스는 메서드를 EndInvoke 호출하여 XML 웹 서비스 메서드에 대한 비동기 호출 호출을 완료합니다. 예를 들어 XML 웹 서비스가 XML 웹 서비스 메서드를 Add
노출하는 경우 프록시 클래스에는 XML 웹 서비스 메서드의 비동기 호출을 완료하기 위해 명명 EndAdd
된 메서드가 포함됩니다. 메서드에 대한 호출 EndInvoke 에 EndAdd
대한 코드 내에서 결과가 예상되는 반환 형식Add
에 배치됩니다.