Exportar (0) Imprimir
Expandir Tudo
Expandir Minimizar
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

Delegado TimerCallback

Representa o método que manipula chamadas a partir de um Timer.

Namespace:  System.Threading
Assembly:  mscorlib (em mscorlib.dll)

[ComVisibleAttribute(true)]
public delegate void TimerCallback(
	Object state
)

Parâmetros

state
Tipo: System.Object
Um objeto que contém informações relevantes para o método invocado por este delegado, para aplicativos específicos ou null.

Use um TimerCallback delegate para especificar o método que é chamado por um Timer. Este método não é executado no thread que criou o timer; ele executa em um segmento separado pool de threads que é fornecido pelo sistema. O TimerCallback representante invoca o método uma vez após o início de tempo ter decorrido e continua a invocá-lo uma vez por intervalo do cronômetro até o Dispose método é chamado, ou até que o Timer.Change método é chamado com o valor do intervalo Infinite.

ObservaçãoObservação

Retornos de chamada podem ocorrer após a Dispose() sobrecarga de método foi chamada, porque o temporizador enfileira retornos de chamada para execução por threads do pool. Você pode usar o Dispose(WaitHandle) a sobrecarga de método aguardar até que todos os retornos de chamada tem concluído.

O delegado de timer é especificado quando o cronômetro é construído e não pode ser alterado. A hora de início um Timer é passado a dueTime parâmetro do Timer construtores e o período é passado a period parâmetro. Para obter um exemplo que demonstra a criação e uso de um TimerCallback delegar, consulte System.Threading.Timer.

O exemplo de código a seguir mostra como criar o representante usado com o Timer classe.


using System;
using System.Threading;

class TimerExample
{
    static void Main()
    {
        // Create an event to signal the timeout count threshold in the
        // timer callback.
        AutoResetEvent autoEvent     = new AutoResetEvent(false);

        StatusChecker  statusChecker = new StatusChecker(10);

        // Create an inferred delegate that invokes methods for the timer.
        TimerCallback tcb = statusChecker.CheckStatus;

        // Create a timer that signals the delegate to invoke 
        // CheckStatus after one second, and every 1/4 second 
        // thereafter.
        Console.WriteLine("{0} Creating timer.\n", 
            DateTime.Now.ToString("h:mm:ss.fff"));
        Timer stateTimer = new Timer(tcb, autoEvent, 1000, 250);

        // When autoEvent signals, change the period to every
        // 1/2 second.
        autoEvent.WaitOne(5000, false);
        stateTimer.Change(0, 500);
        Console.WriteLine("\nChanging period.\n");

        // When autoEvent signals the second time, dispose of 
        // the timer.
        autoEvent.WaitOne(5000, false);
        stateTimer.Dispose();
        Console.WriteLine("\nDestroying timer.");
    }
}

class StatusChecker
{
    private int invokeCount;
    private int  maxCount;

    public StatusChecker(int count)
    {
        invokeCount  = 0;
        maxCount = count;
    }

    // This method is called by the timer delegate.
    public void CheckStatus(Object stateInfo)
    {
        AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
        Console.WriteLine("{0} Checking status {1,2}.", 
            DateTime.Now.ToString("h:mm:ss.fff"), 
            (++invokeCount).ToString());

        if(invokeCount == maxCount)
        {
            // Reset the counter and signal Main.
            invokeCount  = 0;
            autoEvent.Set();
        }
    }
}


.NET Framework

Com suporte em: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Com suporte em: 4, 3.5 SP1

Biblioteca de Classes Portátil

Com suporte em: Biblioteca de Classes Portátil

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Função Server Core sem suporte), Windows Server 2008 R2 (Função Server Core com suporte com o SP1 ou posterior, Itanium sem suporte)

O .NET Framework não oferece suporte a todas as versões de cada plataforma. Para obter uma lista das versões com suporte, consulte Requisitos do sistema do .NET Framework.

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2015 Microsoft