HttpSimpleClientProtocol.BeginInvoke Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Elindítja egy XML-webszolgáltatás metódusának aszinkron meghívását.
protected:
IAsyncResult ^ BeginInvoke(System::String ^ methodName, System::String ^ requestUrl, cli::array <System::Object ^> ^ parameters, AsyncCallback ^ callback, System::Object ^ asyncState);
protected IAsyncResult BeginInvoke(string methodName, string requestUrl, object[] parameters, AsyncCallback callback, object asyncState);
member this.BeginInvoke : string * string * obj[] * AsyncCallback * obj -> IAsyncResult
Protected Function BeginInvoke (methodName As String, requestUrl As String, parameters As Object(), callback As AsyncCallback, asyncState As Object) As IAsyncResult
Paraméterek
- methodName
- String
Az XML Web Service metódus neve.
- requestUrl
- String
A létrehozáskor WebRequesthasználandó URL-cím.
- parameters
- Object[]
Az XML webszolgáltatás metódusának átadni kívánt paramétereket tartalmazó objektumtömb. A tömb értékeinek sorrendje megfelel a származtatott osztály hívó metódusában szereplő paraméterek sorrendjének.
- callback
- AsyncCallback
Az aszinkron metódushívás befejezésekor meghívandó meghatalmazott. Ha callback igen null, a meghatalmazott nem lesz meghívva.
- asyncState
- Object
Az ügyfél által megadott további információk.
Válaszok
A IAsyncResult metódusnak EndInvoke(IAsyncResult) átadható érték, amely lekérheti a visszatérési értékeket az XML Web Service metódusból.
Kivételek
A kérés elérte a kiszolgáló számítógépét, de a feldolgozás nem sikerült.
Példák
Az alábbi példakód egy ASP.NET webűrlap, amely meghív egy Math nevű XML-webszolgáltatást. A függvényen belül a EnterBtn_Click webes űrlap elindítja és befejezi az XML webszolgáltatás metódusának aszinkron Add meghívását.
<%@ 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>
Az alábbi példakód egy proxyosztály, amelyet a Web Services Description Language eszköz (Wsdl.exe) hoz létre az Math alábbi XML-webszolgáltatáshoz.
BeginAdd A proxyosztály metódusán belül a BeginInvoke metódus elindítja az XML Web Service metódus aszinkron Add meghívását.
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
A következő példakód az Math XML-webszolgáltatás, amelyből az előző proxyosztály létrejött.
<%@ 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
Megjegyzések
A methodName paraméter a paraméterek típusainak megkeresésére és a metódust invokáló metódus értékeinek visszaadására BeginInvoke szolgál. A metódushoz esetleg hozzáadott egyéni attribútumok megkeresésére is használható.
SoapDocumentMethodAttribute, SoapRpcMethodAttributemajd XmlElementAttribute adjon meg további információt a HTTP protokollhoz szükséges származtatott módszerről.
asyncState át lesz adva callback , és szerepel a IAsyncResult metódusból BeginInvoke visszaadott fájlban. Hasznos, ha az aszinkron hívás környezetéből adatokat ad át az aszinkron eredmény callbackkezelésére.