theforbidden1
Banido
Ola,
Eu queria executar um ciclo while durante pelo menos 321 miliseconds, como posso fazer isso?
Eu queria executar um ciclo while durante pelo menos 321 miliseconds, como posso fazer isso?
DateTime inicio = DateTime.Now;
DateTime agora = DateTime.Now;
TimeSpan diferenca = agora.Subtract(inicio);
While (diferenca.Milliseconds < 321)
{
código....
.............
agora = DateTime.Now;
diferenca = agora.Subtract(inicio);
}
Se queres executar algo dentro do ciclo com esse limite de tempo, tens de registar um signal handler para SIGALARM e marcar um alarm() para esse tempo, interrompendo assim o ciclo.
Assim não necessitas de fazer espera activa (verificar se já passou o tempo) poupando preciosos ciclos de CPU.
P.S.: Isto só funciona em UNIX e como deve ser óbvio, em sistemas com timers com mais resolução do que 312 ms... (sim, alguns não têm muito mais...)