AsyncResult Classe
Este artigo foi traduzido por máquina. Coloque o ponteiro do mouse sobre as frases do artigo para ver o texto original. Mais informações.
Tradução
Original

Classe AsyncResult

 

Encapsula os resultados de uma operação assíncrona em um delegate.

Namespace:   System.Runtime.Remoting.Messaging
Assembly:  mscorlib (em mscorlib.dll)

System.Object
System.Runtime.Remoting.Messaging.AsyncResult

[ComVisibleAttribute(true)]
public class AsyncResult : IAsyncResult, IMessageSink

NomeDescrição
System_CAPS_pubpropertyAsyncDelegate

Obtém o objeto delegado, no qual a chamada assíncrona foi invocada.

System_CAPS_pubpropertyAsyncState

Obtém o objeto fornecido como o último parâmetro de um BeginInvoke chamada de método.

System_CAPS_pubpropertyAsyncWaitHandle

Obtém um WaitHandle que encapsula os identificadores de sincronização do Win32 e permite a implementação de vários esquemas de sincronização.

System_CAPS_pubpropertyCompletedSynchronously

Obtém um valor indicando se a BeginInvoke chamada concluída de forma síncrona.

System_CAPS_pubpropertyEndInvokeCalled

Obtém ou define um valor indicando se EndInvoke foi chamado na atual AsyncResult.

System_CAPS_pubpropertyIsCompleted

Obtém um valor que indica se o servidor concluiu a chamada.

System_CAPS_pubpropertyNextSink

Obtém o coletor de mensagem próximo da cadeia do coletor.

NomeDescrição
System_CAPS_pubmethodAsyncProcessMessage(IMessage, IMessageSink)

Implementa a interface IMessageSink.

System_CAPS_pubmethodEquals(Object)

Verifica se o objeto especificado é igual ao objeto atual. (herdado de Object.)

System_CAPS_protmethodFinalize()

Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes que ele seja recuperado pela coleta de lixo. (herdado de Object.)

System_CAPS_pubmethodGetHashCode()

Serve como a função de hash para um tipo específico. (herdado de Object.)

System_CAPS_pubmethodGetReplyMessage()

Obtém a mensagem de resposta para a chamada assíncrona.

System_CAPS_pubmethodGetType()

Obtém o Type da instância atual. (herdado de Object.)

System_CAPS_protmethodMemberwiseClone()

Cria uma cópia superficial do Object atual.(herdado de Object.)

System_CAPS_pubmethodSetMessageCtrl(IMessageCtrl)

Conjuntos de um IMessageCtrl para a chamada de método remoto atual, que fornece uma maneira para controlar mensagens assíncronas após ter sido despachados.

System_CAPS_pubmethodSyncProcessMessage(IMessage)

Processos de forma síncrona uma mensagem de resposta retornada por uma chamada de método em um objeto remoto.

System_CAPS_pubmethodToString()

Retorna uma string que representa o objeto atual.(herdado de Object.)

O AsyncResult classe é usada em conjunto com chamadas de método assíncrono feitas usando delegados.O IAsyncResult retornado a partir do delegado BeginInvoke método pode ser convertido para um AsyncResult.O AsyncResult tem o AsyncDelegate propriedade que mantém o delegado de objeto no qual a chamada assíncrona foi invocada.

Para obter mais informações sobre BeginInvoke e chamadas assíncronas usando delegados, consulte Programação assíncrona usando delegados.

O exemplo a seguir demonstra como usar o AsyncWaitHandle propriedade para obter um WaitHandlee como aguardar uma chamada assíncrona em um delegate.O WaitHandle é sinalizado quando a chamada assíncrona for concluída e você pode esperar por ela chamando o WaitOne método.

O exemplo consiste em duas classes, a classe que contém o método é chamado de forma assíncrona, e a classe que contém o Main método que faz a chamada.

Para obter mais informações e obter mais exemplos de chamar os métodos de forma assíncrona usando delegados, consulte Chamando métodos síncronos de forma assíncrona.

using System;
using System.Threading; 

namespace Examples.AdvancedProgramming.AsynchronousOperations
{
    public class AsyncDemo 
    {
        // The method to be executed asynchronously.
        public string TestMethod(int callDuration, out int threadId) 
        {
            Console.WriteLine("Test method begins.");
            Thread.Sleep(callDuration);
            threadId = Thread.CurrentThread.ManagedThreadId;
            return String.Format("My call time was {0}.", callDuration.ToString());
        }
    }
    // The delegate must have the same signature as the method
    // it will call asynchronously.
    public delegate string AsyncMethodCaller(int callDuration, out int threadId);
}
using System;
using System.Threading;

namespace Examples.AdvancedProgramming.AsynchronousOperations
{
    public class AsyncMain 
    {
        static void Main() 
        {
            // The asynchronous method puts the thread id here.
            int threadId;

            // Create an instance of the test class.
            AsyncDemo ad = new AsyncDemo();

            // Create the delegate.
            AsyncMethodCaller caller = new AsyncMethodCaller(ad.TestMethod);

            // Initiate the asychronous call.
            IAsyncResult result = caller.BeginInvoke(3000, 
                out threadId, null, null);

            Thread.Sleep(0);
            Console.WriteLine("Main thread {0} does some work.",
                Thread.CurrentThread.ManagedThreadId);

            // Wait for the WaitHandle to become signaled.
            result.AsyncWaitHandle.WaitOne();

            // Perform additional processing here.
            // Call EndInvoke to retrieve the results.
            string returnValue = caller.EndInvoke(out threadId, result);

            // Close the wait handle.
            result.AsyncWaitHandle.Close();

            Console.WriteLine("The call executed on thread {0}, with return value \"{1}\".",
                threadId, returnValue);
        }
    }
}

/* This example produces output similar to the following:

Main thread 1 does some work.
Test method begins.
The call executed on thread 3, with return value "My call time was 3000.".
 */

.NET Framework
Disponível desde 1.1

Qualquer estático público (Compartilhado no Visual Basic) membros desde tipo são thread safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Retornar ao topo
Mostrar:
© 2016 Microsoft