Página 3 de 3
Usar processamento 8 Nucleos
Enviado: 29 Mar 2017 08:30
por janio
Ola a todos,
A questao do DoEvents eh saber a frequencia do chamamento da função. aSimoes, ao que parece chama a função a cada skip.
Em um processamento de 80 mil registros, devo chamar DoEvents a cada registro?
Janio
Usar processamento 8 Nucleos
Enviado: 29 Mar 2017 09:58
por JoséQuintas
É pra usar somente aonde necessário, aonde não houver outra alternativa, e sem abuso.
Lembra do Clipper? 100% de CPU?
Pois é, uma das opções era a OSLIB, e fazer chamadas a OL_Yield().
Isso liberava tempo para o Windows fazer outras coisas.
Quanto mais tempo liberado para o Windows, menos tempo liberado para o Clipper.
Programação não é roupa, não tem que acompanhar a moda.
Lógico, é só fazer como a gente costumar fazer:
É fazer um teste em determinada rotina que pode precisar disso e ver o que acontece.
Lembrando que o tradicional sempre funciona, e faz parte do Harbour.
Usar processamento 8 Nucleos
Enviado: 29 Mar 2017 10:03
por Claudio Soto
Sería deseable llamar DoEvens en cada skip.
No existe límites en el número de llamados, lo importante es que la cola de mensajes de Windows no se atasque. Si la cola de mensajes esta vacía DoEvents no hace nada porque PeekMessage retorna 0 y se termina el while de DoEvents
Usar processamento 8 Nucleos
Enviado: 29 Mar 2017 15:01
por JoséQuintas
É que o VB6 também tem um DoEvents(), que é para que outras tarefas sejam efetuadas.
O próprio nome DO EVENTS, parece estar relacionado a "execute eventos".
Por isso achei que se tratava da mesma coisa, igual ao usado no Clipper pra não consumir 100% de CPU.
Pelo que entendi, os eventos do Windows são como se fossem o KEYBOARD do Harbour, mas sempre acumulando o que deve ser feito.
Se essas pendências se acumularem demais, o Windows acaba considerando que travou.
Nesse caso, esse DoEvents() foi criado foi pra desprezar essas pendências, e não tem nada a ver com o DoEvents() do VB, ou OL_Yield() da OSLIB pra evitar 100% de CPU.
Então seria considerar que os eventos serão perdidos ao chamar DoEvents(), na hora de decidir em que rotina colocar.
.