SoapHttpClientProtocol.BeginInvoke Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Spustí asynchronní vyvolání metody webové služby XML pomocí protokolu SOAP.
protected:
IAsyncResult ^ BeginInvoke(System::String ^ methodName, cli::array <System::Object ^> ^ parameters, AsyncCallback ^ callback, System::Object ^ asyncState);
protected IAsyncResult BeginInvoke (string methodName, object[] parameters, AsyncCallback callback, object asyncState);
member this.BeginInvoke : string * obj[] * AsyncCallback * obj -> IAsyncResult
Protected Function BeginInvoke (methodName As String, parameters As Object(), callback As AsyncCallback, asyncState As Object) As IAsyncResult
Parametry
- methodName
- String
Název metody webové služby XML v odvozené třídě, která vyvolává metodu BeginInvoke(String, Object[], AsyncCallback, Object) .
- parameters
- Object[]
Pole objektů obsahující parametry, které se mají předat webové službě XML. Pořadí hodnot v poli odpovídá pořadí parametrů ve volající metodě odvozené třídy.
- callback
- AsyncCallback
Delegát, který se má volat po dokončení asynchronního vyvolání. Pokud callback
je null
, delegát se nevolá.
- asyncState
- Object
Další informace poskytnuté volajícím.
Návraty
Předá IAsyncResult se EndInvoke(IAsyncResult) metodě k získání návratových hodnot z volání vzdálené metody.
Výjimky
Požadavek dorazil do počítače serveru, ale nebyl úspěšně zpracován.
Požadavek nebyl platný pro aktuální stav objektu.
Při přístupu k síti došlo k chybě.
Příklady
Následující příklad kódu je třída proxy generovaná nástrojem Web Services Description Language (Wsdl.exe) pro Math
webovou službu XML.
BeginAdd
V rámci metody třídy BeginInvoke proxy metoda spouští asynchronní vyvolání metody Add
webové služby XML.
#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^>^temp1 = {num1,num2};
array<Object^>^results = this->Invoke( "Add", temp1 );
return *dynamic_cast<int^>(results[ 0 ]);
}
[System::Diagnostics::DebuggerStepThroughAttribute]
System::IAsyncResult^ BeginAdd( int num1, int num2, System::AsyncCallback^ callback, Object^ asyncState )
{
array<Object^>^temp2 = {num1,num2};
return this->BeginInvoke( "Add", temp2, 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
Následující příklad kódu je Math
webová služba XML, ze které byla vytvořena předchozí třída proxy.
<%@ 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
Poznámky
Obvykle byste nevolali metodu BeginInvoke přímo, pokud jste vytvářeli vlastní třídu proxy pro webovou službu XML.
Třída proxy vygenerovaná nástrojem Jazyk popisu webových služeb (Wsdl.exe) z popisu služby zveřejňuje metody webové služby XML jako názvy odvozené z třídy proxy pro synchronní volání metod webové služby XML. Chcete-li volat metody webové služby XML asynchronně, jsou přidány dvě další metody proxy pro každou metodu webové služby XML, jedna s Begin
předponou přidána k názvu metody webové služby XML a jedna s předponou End
přidána.
Třída proxy volá metodu BeginInvoke pro spuštění asynchronního volání volání webové služby XML. Pokud například webová služba XML zpřístupňuje metodu webové služby XML s názvem Add
, proxy třída obsahuje metodu s názvem BeginAdd
, pro spuštění vyvolání metody webové služby XML. V kódu pro BeginAdd
se provede BeginInvoke volání metody a výsledky se umístí do očekávaného návratového typu pro Add
.
Slouží methodName
k vyhledání vlastních atributů, které mohly být přidány do metody, například SoapDocumentMethodAttribute.
SoapDocumentMethodAttribute poskytuje další informace o odvozené metodě, která je požadována pro protokol SOAP.
asyncState
se předá do callback
a je zahrnuta v souboru IAsyncResult , který je vrácen z BeginInvoke metody . Parametr asyncState
lze použít k předání informací o kontextu asynchronního volání zadaného v parametru callback
delegátu, který zpracovává výsledek.