HttpSimpleClientProtocol.EndInvoke(IAsyncResult) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Met fin à l'appel asynchrone d'une méthode de service Web XML utilisant HTTP.
protected:
System::Object ^ EndInvoke(IAsyncResult ^ asyncResult);
protected object EndInvoke (IAsyncResult asyncResult);
member this.EndInvoke : IAsyncResult -> obj
Protected Function EndInvoke (asyncResult As IAsyncResult) As Object
Paramètres
- asyncResult
- IAsyncResult
Le IAsyncResult retourné par la méthode BeginInvoke(String, String, Object[], AsyncCallback, Object).
Retours
Tableau d'objets contenant la valeur de retour, ainsi que les paramètres de référence ou paramètres out
éventuels de la méthode de service Web XML.
Exceptions
asyncResult
n'est pas la valeur de retour de la méthode BeginInvoke(String, String, Object[], AsyncCallback, Object).
Exemples
L’exemple de code suivant est un ASP.NET Web Form, qui appelle un service Web XML nommé Math
. Dans la EnterBtn_Click
fonction , le formulaire web démarre et termine un appel asynchrone de la Add
méthode de service Web XML.
<%@ Page Language="VB" %>
<html>
<script language="VB" runat="server">
Sub EnterBtn_Click(Src As Object, E As EventArgs)
Dim math As New MyMath.Math()
' Call to Add XML Web service method asynchronously.
Dim result As IAsyncResult = math.BeginAdd(Convert.ToInt32(Num1.Text), Convert.ToInt32(Num2.Text), Nothing, Nothing)
' Wait for the asynchronous call to complete.
result.AsyncWaitHandle.WaitOne()
' Complete the asynchronous call to the Add XML Web service method.
Dim iTotal As Integer = math.EndAdd(result)
Total.Text = "Total: " & iTotal.ToString()
End Sub 'EnterBtn_Click
</script>
<body>
<form action="MathClient.aspx" runat=server>
Enter the two numbers you want to add and then press the Total button.
<p>
Number 1: <asp:textbox id="Num1" runat=server/> +
Number 2: <asp:textbox id="Num2" runat=server/> =
<asp:button text="Total" Onclick="EnterBtn_Click" runat=server/>
<p>
<asp:label id="Total" runat=server/>
</form>
</body>
</html>
L’exemple de code suivant est une classe proxy générée par l’outil Web Services Description Language (Wsdl.exe) pour le Math
service Web XML ci-dessous. Dans la EndAdd
méthode de la classe proxy, la EndInvoke méthode démarre un appel asynchrone de la Add
méthode de service Web XML.
namespace MyMath
{
[XmlRootAttribute("snippet1>",Namespace="http://MyMath/",IsNullable=false)]
public ref class Math: public HttpGetClientProtocol
{
public:
Math()
{
this->Url = "http://www.contoso.com/math.asmx";
}
[HttpMethodAttribute(System::Web::Services::Protocols::XmlReturnReader::typeid,
System::Web::Services::Protocols::UrlParameterWriter::typeid)]
int Add( String^ num1, String^ num2 )
{
array<Object^>^temp0 = {num1,num2};
return *dynamic_cast<int^>(this->Invoke( "Add", String::Concat( this->Url, "/Add" ), temp0 ));
}
IAsyncResult^ BeginAdd( String^ num1, String^ num2, AsyncCallback^ callback, Object^ asyncState )
{
array<Object^>^temp1 = {num1,num2};
return this->BeginInvoke( "Add", String::Concat( this->Url, "/Add" ), temp1, callback, asyncState );
}
int EndAdd( IAsyncResult^ asyncResult )
{
return *dynamic_cast<int^>(this->EndInvoke( asyncResult ));
}
};
}
namespace MyMath
{
[XmlRootAttribute("int", Namespace = "http://MyMath/", IsNullable = false)]
public class Math : HttpGetClientProtocol
{
public Math()
{
this.Url = "http://www.contoso.com/math.asmx";
}
[HttpMethodAttribute(typeof(System.Web.Services.Protocols.XmlReturnReader),
typeof(System.Web.Services.Protocols.UrlParameterWriter))]
public int Add(int num1, int num2)
{
return ((int)(this.Invoke("Add", ((this.Url) + ("/Add")),
new object[] { num1, num2 })));
}
public IAsyncResult BeginAdd(int num1, int num2, AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("Add", ((this.Url) + ("/Add")),
new object[] { num1, num2 }, callback, asyncState);
}
public int EndAdd(IAsyncResult asyncResult)
{
return ((int)(this.EndInvoke(asyncResult)));
}
}
}
Namespace MyMath
<XmlRootAttribute("int", Namespace := "http://MyMath/", IsNullable := False)> _
Public Class Math
Inherits HttpGetClientProtocol
Public Sub New()
Me.Url = "http://www.contoso.com/math.asmx"
End Sub
<HttpMethodAttribute(GetType(XmlReturnReader), GetType(UrlParameterWriter))> _
Public Function Add(num1 As String, num2 As String) As Integer
Return CInt(Me.Invoke("Add", Me.Url + "/Add", New Object() {num1, num2}))
End Function 'Add
Public Function BeginAdd(num1 As String, num2 As String, callback As AsyncCallback, asyncState As Object) As IAsyncResult
Return Me.BeginInvoke("Add", Me.Url + "/Add", New Object() {num1, num2}, callback, asyncState)
End Function 'BeginAdd
Public Function EndAdd(asyncResult As IAsyncResult) As Integer
Return CInt(Me.EndInvoke(asyncResult))
End Function 'EndAdd
End Class
End Namespace 'MyMath
L’exemple de code suivant est le Math
service Web XML, à partir duquel la classe proxy ci-dessus a été créée.
<%@ WebService Language="C#" Class="Math"%>
using System.Web.Services;
using System;
public class Math {
[ WebMethod ]
public int Add(int num1, int num2) {
return num1+num2;
}
}
<%@ WebService Language="VB" Class="Math"%>
Imports System.Web.Services
Imports System
Public Class Math
<WebMethod()> _
Public Function Add(num1 As Integer, num2 As Integer) As Integer
Return num1 + num2
End Function 'Add
End Class 'Math