Exportar (0) Imprimir
Expandir Tudo
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
Este tópico ainda não foi avaliado como - Avalie este tópico

Classe Timer

Fornece um mecanismo para a execução de um método em intervalos especificados. Esta classe não pode ser herdada.

Namespace:  System.Threading
Assembly:  mscorlib (em mscorlib.dll)
[ComVisibleAttribute(true)]
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public sealed class Timer : MarshalByRefObject, 
	IDisposable

O tipo Timer expõe os membros a seguir.

  NomeDescrição
Método públicoTimer(TimerCallback)Inicializa uma nova instância da Timer classe com um período infinito e um vencimento infinito de tempo, usando o recém-criado Timer objeto como o objeto de estado.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilTimer(TimerCallback, Object, Int32, Int32)Inicializa uma nova instância da Timer de classe, usando um inteiro assinado de 32 bits para especificar o intervalo de tempo.
Método públicoCompatível com o XNA FrameworkTimer(TimerCallback, Object, Int64, Int64)Inicializa uma nova instância da Timer de classe, usando inteiros de 64 bits assinados para medir os intervalos de tempo.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilTimer(TimerCallback, Object, TimeSpan, TimeSpan)Inicializa uma nova instância da Timer de classe, usando TimeSpan valores para medir os intervalos de tempo.
Método públicoCompatível com o XNA FrameworkTimer(TimerCallback, Object, UInt32, UInt32)Inicializa uma nova instância da Timer de classe, usando inteiros não assinados de 32 bits para medir os intervalos de tempo.
Superior
  NomeDescrição
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilChange(Int32, Int32)Altera a hora de início e o intervalo entre invocações do método de um temporizador, usando inteiros de 32 bits assinados para medir os intervalos de tempo.
Método públicoCompatível com o XNA FrameworkChange(Int64, Int64)Altera a hora de início e o intervalo entre invocações do método de um temporizador, usando inteiros de 64 bits assinados para medir os intervalos de tempo.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilChange(TimeSpan, TimeSpan)Altera a hora de início e o intervalo entre invocações do método de um temporizador, usando TimeSpan valores para medir os intervalos de tempo.
Método públicoCompatível com o XNA FrameworkChange(UInt32, UInt32)Altera a hora de início e o intervalo entre invocações do método de um temporizador, usando inteiros não assinados de 32 bits para medir os intervalos de tempo.
Método públicoCreateObjRefCria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject.)
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilDispose()Libera todos os recursos utilizados pela instância atual do Timer.
Método públicoDispose(WaitHandle)Libera todos os recursos utilizados pela instância atual do Timer e sinais quando o temporizador foi descartado.
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilEquals(Object) Verifica se o objeto especificado é igual ao objeto atual. (Herdado de Object.)
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilGetHashCodeServe como a função de hash padrão. (Herdado de Object.)
Método públicoGetLifetimeServiceRecupera o objeto de serviço vida útil atual que controla a diretiva de vida útil para esta instância. (Herdado de MarshalByRefObject.)
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilGetType Obtém o Type da instância atual. (Herdado de Object.)
Método públicoInitializeLifetimeServiceObtém um objeto de serviço de tempo de vida para controlar a diretiva vida útil para esta instância. (Herdado de MarshalByRefObject.)
Método públicoCompatível com o XNA FrameworkCom suporte por Biblioteca de Classes PortátilToStringRetorna uma string que representa o objeto atual. (Herdado de Object.)
Superior

Use um TimerCallback delegate para especificar o método que você deseja que o Timer para executar. O delegado de timer é especificado quando o cronômetro é construído e não pode ser alterado. O método não é executado no thread que criou o timer; ele executa em um ThreadPool segmento fornecido pelo sistema.

Quando você cria um timer, você pode especificar um intervalo de tempo de espera antes que a primeira execução do método (hora de vencimento) e uma quantidade de tempo de espera entre as execuções subseqüentes (ponto). Você pode alterar esses valores, ou desabilitar o timer, usando o Change método.

ObservaçãoObservação

Enquanto você estiver usando um Timer, você deve manter uma referência a ele. Assim como acontece com qualquer objeto gerenciado, um Timer está sujeito a coleta de lixo, quando não houver nenhuma referência a ele. O fato de que uma Timer está ativo ainda não impede que ele seja coletado.

Quando um temporizador não é mais necessária, use o Dispose método para liberar os recursos mantidos pelo timer. Observe que os 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 método de retorno de chamada executado pelo timer deve ser reentrante, porque ele é chamado no ThreadPool segmentos. O retorno de chamada pode ser executado simultaneamente em dois threads do pool se o intervalo do cronômetro for menor que o tempo necessário para executar o retorno de chamada, ou se todos os threads do pool estão em uso e o retorno de chamada é enfileirado várias vezes.

ObservaçãoObservação

System.Threading.Timer é um timer simple e leve que usa os métodos de retorno de chamada e é atendido por threads do pool. Não é recomendado para uso com o Windows Forms, pois seus retornos de chamada não ocorrem no thread da interface do usuário. System.Windows.Forms.Timer é uma opção melhor para uso com o Windows Forms. Para obter funcionalidade timer baseado em servidor, você poderá considerar o uso System.Timers.Timer, que gera eventos e possui recursos adicionais.

ObservaçãoObservação

O atributo HostProtectionAttribute aplicado a este tipo ou membro tem o seguinte Resources valor de propriedade: Synchronization | ExternalThreading. O HostProtectionAttribute não afeta aplicativos de área de trabalho (que são normalmente iniciados com o clique duplo em um ícone, a digitação de um comando ou a inserção de uma URL em um navegador). Para obter mais informações, consulte a classe HostProtectionAttribute ou Programação em SQL Server e atributos de proteção de host.

O exemplo de código a seguir demonstra os recursos da 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.

Esse tipo é de Thread de segurança.

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft. Todos os direitos reservados.