LogicalMethodInfo.BeginInvoke(Object, Object[], AsyncCallback, Object) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicia uma invocação assíncrona do método representado por esse LogicalMethodInfo.
public:
IAsyncResult ^ BeginInvoke(System::Object ^ target, cli::array <System::Object ^> ^ values, AsyncCallback ^ callback, System::Object ^ asyncState);
public IAsyncResult BeginInvoke (object target, object[] values, AsyncCallback callback, object asyncState);
member this.BeginInvoke : obj * obj[] * AsyncCallback * obj -> IAsyncResult
Public Function BeginInvoke (target As Object, values As Object(), callback As AsyncCallback, asyncState As Object) As IAsyncResult
Parâmetros
- values
- Object[]
Uma lista de argumentos para o método invocado. Esta é uma matriz de objetos com o mesmo número, ordem e tipo que os parâmetros do método. Se o método não exigir nenhum parâmetro, values
deverá ser null
.
- callback
- AsyncCallback
O delegado a ser chamado quando a invocação assíncrona for concluída. Se callback
for null
, o delegado não será chamado.
- asyncState
- Object
Informações de estado que são passadas para o delegado.
Retornos
Um IAsyncResult que é passado para EndInvoke(Object, IAsyncResult) para obter os valores de retorno da chamada do método remoto.
Exceções
O parâmetro target
é null
.
O número, tipo e ordem dos parâmetros no values
não correspondem à assinatura do método invocado.
O chamador não tem permissão para invocar esse método.
Exemplos
public:
[PermissionSet(SecurityAction::Demand, Name="FullTrust")]
static void main()
{
// Get the type information.
// Note: The MyMath class is a proxy class generated by the Wsdl.exe
// utility for the Math Web service. This class can also be found in
// the SoapHttpClientProtocol class example.
Type^ myType = MyMath::MyMath::typeid;
// Get the method info.
MethodInfo^ myBeginMethod = myType->GetMethod( "BeginAdd" );
MethodInfo^ myEndMethod = myType->GetMethod( "EndAdd" );
// Create an instance of the LogicalMethodInfo class.
array<MethodInfo^>^ temp0 = { myBeginMethod, myEndMethod };
LogicalMethodInfo^ myLogicalMethodInfo =
( LogicalMethodInfo::Create( temp0, LogicalMethodTypes::Async ) )[ 0 ];
// Get an instance of the proxy class.
MyMath::MyMath^ myMathService = gcnew MyMath::MyMath;
// Call the MyEndIntimationMethod method to intimate the end of
// the asynchronous call.
AsyncCallback^ myAsyncCallback = gcnew AsyncCallback( MyEndIntimationMethod );
// Begin to invoke the Add method.
array<Object^>^ temp1 = { 10, 10 };
IAsyncResult^ myAsyncResult = myLogicalMethodInfo->BeginInvoke(
myMathService, temp1, myAsyncCallback, nullptr );
// Wait until invoke is complete.
myAsyncResult->AsyncWaitHandle->WaitOne();
// Get the result.
array<Object^>^ myReturnValue;
myReturnValue = myLogicalMethodInfo->EndInvoke( myMathService, myAsyncResult );
Console::WriteLine( "Sum of 10 and 10 is {0}", myReturnValue[ 0 ] );
}
// This method will be called at the end of the asynchronous call.
static void MyEndIntimationMethod( IAsyncResult^ /*Result*/ )
{
Console::WriteLine( "Asynchronous call on Add method finished." );
}
public static void Main()
{
// Get the type information.
// Note: The MyMath class is a proxy class generated by the Wsdl.exe
// utility for the Math Web service. This class can also be found in
// the SoapHttpClientProtocol class example.
Type myType = typeof(MyMath.MyMath);
// Get the method info.
MethodInfo myBeginMethod = myType.GetMethod("BeginAdd");
MethodInfo myEndMethod = myType.GetMethod("EndAdd");
// Create an instance of the LogicalMethodInfo class.
LogicalMethodInfo myLogicalMethodInfo =
(LogicalMethodInfo.Create(new MethodInfo[] {myBeginMethod,myEndMethod},
LogicalMethodTypes.Async))[0];
// Get an instance of the proxy class.
MyMath.MyMath myMathService = new MyMath.MyMath();
// Call the MyEndIntimationMethod method to intimate the end of
// the asynchronous call.
AsyncCallback myAsyncCallback = new AsyncCallback(MyEndIntimationMethod);
// Begin to invoke the Add method.
IAsyncResult myAsyncResult = myLogicalMethodInfo.BeginInvoke(
myMathService,new object[]{10,10},myAsyncCallback,null);
// Wait until invoke is complete.
myAsyncResult.AsyncWaitHandle.WaitOne();
// Get the result.
object[] myReturnValue;
myReturnValue = myLogicalMethodInfo.EndInvoke(myMathService,myAsyncResult);
Console.WriteLine("Sum of 10 and 10 is " + myReturnValue[0]);
}
// This method will be called at the end of the asynchronous call.
static void MyEndIntimationMethod(IAsyncResult Result)
{
Console.WriteLine("Asynchronous call on Add method finished.");
}
Public Shared Sub Main()
' Get the type information.
' Note: The MyMath class is a proxy class generated by the Wsdl.exe
' utility for the Math Web Service. This class can also be found in
' the SoapHttpClientProtocol class example.
Dim myType As Type = GetType(MyMath.MyMath)
' Get the method info.
Dim myBeginMethod As MethodInfo = myType.GetMethod("BeginAdd")
Dim myEndMethod As MethodInfo = myType.GetMethod("EndAdd")
' Create an instance of the LogicalMethodInfo class.
Dim myLogicalMethodInfo As LogicalMethodInfo = _
LogicalMethodInfo.Create(New MethodInfo() {myBeginMethod, myEndMethod}, _
LogicalMethodTypes.Async)(0)
' Get an instance of the proxy class.
Dim myMathService As New MyMath.MyMath()
' Call the MyEndIntimationMethod method to intimate the end of
' the asynchronous call.
Dim myAsyncCallback As New AsyncCallback(AddressOf MyEndIntimationMethod)
' Beging to invoke the Add method.
Dim myAsyncResult As IAsyncResult = _
myLogicalMethodInfo.BeginInvoke( _
myMathService, New Object() {10, 10}, myAsyncCallback, Nothing)
' Wait until invoke is complete.
myAsyncResult.AsyncWaitHandle.WaitOne()
' Get the result.
Dim myReturnValue() As Object
myReturnValue = myLogicalMethodInfo.EndInvoke(myMathService, myAsyncResult)
Console.WriteLine(("Sum of 10 and 10 is " & myReturnValue(0)))
End Sub
' This method will be called at the end of asynchronous call.
Shared Sub MyEndIntimationMethod(ByVal Result As IAsyncResult)
Console.WriteLine("Asynchronous call on method 'Add' finished.")
End Sub