Il faut savoir que Windows n'est pas un OS temps réel (j'aime pas ce terme, mais il est consacré par une génération d'informaticien). Aussi, quand le PC a plusieurs tâches à exécuter, il exécute une seule tâche à la fois (c'est logique), mais c'est le programme qui est en train de s'exécuter qui décide de redonner la main pour que Windows puisse s'occuper des copains qui attendent. Si un programme décide de ne pas relâcher la main, il la garde et toutes les autres taches sont bloquées (le PC plante).
Dans un OS bien fait, on affecte à chaque programme une tranche de temps et chacun fonctionne gentiment l'un après l'autre. Personne ne peut accaparer la totalité des ressource.
Explication un peu simpliste et rapide ....mais pas trop fausse à mon gout.
Dans ton "programme 1", Je sais pas ce que fait ton instruction
frbatch.instruction 'liée au logiciel d'océrisation
Mais imagine qu'elle lance un "programme 2" en VB qui soit très long à s'exécuter. Si il est bien écrit, il va comporter des DoEvents réels ou implicites (après chaque retour de Sub ou de Function). Donc on ne peut pas affirmer que le "programme 2" sera fini avant le retour au "programme 1"
pour vérifier, tu peux mettre une temporisation après ton DoEvents de ce genre
1 2 3 4 5 6 7 8 9 10
|
frbatch.instruction 'liée au logiciel d'océrisation
DoEvents
Tempo%=10 'variable globale décrémentée toutes les mS par un timer si >0
Do
DoEvents
Loop While Tempo% > 0
Instructions VB" |
Partager