Pergunta

Na verdade, é uma diferença perceptível que eu já vi, mas não posso explicar. Esses temporizadores têm intervalos definidos para 1ms (o mais baixo disponível), mas, embora seja minimizado, parece marcar mais rápido? Alguém poderia explicar esse fenômeno para mim? E se possível, explique como reproduzir o efeito enquanto a janela é maximizada?

Foi útil?

Solução

Isso é um Forms.Timer?

Duvido que esteja funcionando mais rápido, mais provável que o evento de disparo do timer esteja sendo tratado de maneira mais oportuna. Embora minimizado, presumivelmente haverá menos mensagens tratadas pela bomba de mensagens do formulário, que pode ser responsável por uma fatia de tempo maior para lidar com as mensagens do timer. Há também o ISUE da resolução mínima do timer.

Se aplicável, tente usar um dos outros tipos de timer, como System.Timers

O componente do timer do Windows Forms é um thread único e é limitado a uma precisão de 55 milissegundos. Se você precisar de um cronômetro multithread com maior precisão, use a classe Timer no espaço de nome do sistema.timers.

Ref.

Outras dicas

Se bem me lembro corretamente, o mínimo Resolução Você pode sair de um System.Windows.Forms.Timer (O que eu presumo é o que você está usando aqui) é 55 ms. Definê -lo como 1 ms significa essencialmente que ele marca continuamente.

Obviamente, um temporizador não garante que os carrapatos cheguem exatamente ao intervalo especificado. Se o seu aplicativo estiver ocupado fazendo outras coisas (como redesenhar a tela), pode levar mais alguns MS ou significativamente mais sob carga pesada. Se o timer estiver definido como um intervalo de 1 segundo, você não notará isso, mas na janela mínima (55 ms), poderá.

Quando o aplicativo é minimizado, há menos outros eventos que podem interromper os eventos do timer antes de dispararem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top