Partilhar via


LogicalMethodInfo.BeginInvoke(Object, Object[], AsyncCallback, Object) Método

Definição

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

target
Object

A instância do Object na qual invocar o método.

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

IAsyncResult

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

Aplica-se a