Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Este tópico descreve como criar, identificar, definir e excluir temporizadores. Um aplicativo usa um temporizador para agendar um evento para uma janela após um tempo especificado ter decorrido. Sempre que o intervalo especificado (ou o limite de tempo) de um temporizador expira, o sistema notifica a janela associada ao temporizador. Como a precisão de um temporizador depende da taxa de relógio do sistema e da frequência com que o aplicativo recupera mensagens da fila de mensagens, o valor de tempo limite é apenas aproximado.
Este tópico inclui as seguintes seções.
- Operações de temporizador
- High-Resolution temporizador
- Objetos de temporizador de espera
- Tópicos relacionados
Operações do temporizador
Os aplicativos criam temporizadores usando a função SetTimer. Um novo temporizador começa a cronometrar o intervalo assim que ele é criado. Um aplicativo pode alterar o valor de tempo limite de um temporizador usando SetTimer e pode destruir um temporizador usando a funçãoKillTimer. Para usar os recursos do sistema de forma eficiente, os aplicativos devem destruir temporizadores que não são mais necessários.
Cada temporizador tem um identificador exclusivo. Ao criar um temporizador, um aplicativo pode especificar um identificador ou fazer com que o sistema crie um valor exclusivo. O primeiro parâmetro de uma mensagem WM_TIMER contém o identificador do temporizador que publicou a mensagem.
Se você especificar um identificador de janela na chamada para SetTimer, o aplicativo associará o temporizador a essa janela. Sempre que o valor de tempo limite para o temporizador expira, o sistema publica uma mensagem de WM_TIMER na janela associada ao temporizador. Se nenhum identificador de janela for especificado na chamada para SetTimer, a aplicação que criou o temporizador deve monitorizar a sua fila de mensagens para mensagens WM_TIMER e enviá-las para a janela correta.
Observação
Se especificares a função opcional TIMERPROC callback, a função é chamada durante o Message Loop e WM_TIMER não é despachada para o callbackdeWNDPROC.
Se precisar ser notificado quando um temporizador expirar, utilize um temporizador aguardável. Para obter mais informações, consulte Objetos Temporizadores Esperáveis (Waitable Timer Objects).
Temporizador de alta resolução
Um contador é um termo geral usado na programação para se referir a uma variável de incremento. Alguns sistemas incluem um contador de desempenho de alta resolução que fornece intervalos de tempo de elevada resolução.
Se existir um contador de desempenho de alta resolução no sistema, você poderá usar a função QueryPerformanceFrequency para expressar a frequência, em contagens por segundo. O valor da contagem depende do processador. Em alguns processadores, por exemplo, a contagem pode ser a taxa de ciclo do clock do processador.
A funçãoQueryPerformanceCounter recupera o valor atual do contador de desempenho de alta resolução. Ao chamar essa função no início e no final de uma seção de código, um aplicativo essencialmente usa o contador como um temporizador de alta resolução. Por exemplo, suponha que QueryPerformanceFrequency indique que a frequência do contador de desempenho de alta resolução é de 50.000 contagens por segundo. Se a aplicação chamar QueryPerformanceCounter imediatamente antes e imediatamente após a seção do código a ser cronometrada, os valores do contador podem ser 1500 contagens e 3500 contagens, respectivamente. Esses valores indicariam que .04 segundos (2000 contagens) transcorreram enquanto o código era executado.
Objetos de temporizador de espera
Um objeto de temporizador de espera é um objeto de sincronização cujo estado é definido como sinalizado quando o tempo de vencimento especificado chega. Existem dois tipos de temporizadores de espera que podem ser criados: reposição manual e sincronização. Um temporizador de qualquer tipo também pode ser um temporizador periódico.
Um thread usa o CreateWaitableTimer ou função de CreateWaitableTimerEx para criar um objeto de temporizador. O thread de criação especifica se o temporizador é um temporizador de redefinição manual ou um temporizador de sincronização. O thread de criação pode especificar um nome para o objeto de temporizador. Threads em outros processos podem abrir um identificador para um temporizador existente especificando seu nome em uma chamada para o função OpenWaitableTimer. Qualquer thread com um identificador para um objeto de temporizador pode usar uma das funções de espera para aguardar que o estado do temporizador seja definido como sinalizado.
Para obter mais informações sobre como usar objetos de temporizador de espera para sincronização de threads, consulte Waitable Timer Objects.