Donner la main aux autres applications [Résolu]

Signaler
Messages postés
6
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
19 avril 2007
-
cs_felipe99
Messages postés
6
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
19 avril 2007
-
Voici mon probleme. J'ai un code qui a une grosse boucle ou a chaque fois il y a un ping. Quand le programme est dans cette boucle je ne peux rien faire. Je voudrais pouvoir rendre la main aux autres taches pendant le ping et puis retourner voir ensuite si ce ping est fini.
Comment est ce que je peux faire ceci afin d'obtenir plus de fluidite dans mon programme ?
Merci 

9 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Voir du côté de : DoEvents

A+
Exploreur

 
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
18
Le ping pouvant être très long avant d'arriver au DoEvents, ton prog se figera et tu ne pourras rien y faire en VB6 qui ne connait pas les threads.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
18
Aucune en VB6, trop vieux, faut migrer sur .net

ciao...
BruNews, MVP VC++
Messages postés
6
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
19 avril 2007

Ok merci maintenant mon programme est beaucoup plus fluide.
Cependant je me demande si il n'y a pas un autre moyen de faire car si on fait tourner une tache qui prend 5 minutes dans une boucle et que l'on met DoEvents dans la boucle alors on a la main seulement toutes les 5 minutes, non?
Desole si la question parait concon mais je fais du VB depuis 4 jours donc ...
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Voici ce que donne l'aide en ligne de vb(exemple de DoEvents dans une boucle)...

DoEvents, fonction, exemple
Cet exemple utilise la fonction DoEvents afin que l'exécution soit cédée au système d'exploitation une fois toutes les 1000 répétitions de la boucle. La fonction DoEvents renvoie le nombre de feuilles Visual Basic ouvertes uniquement si l'application hôte est Visual Basic.

' Crée une variable pour maintenir le nombre de
' feuilles Visual Basic chargées et visibles.
Dim I, OpenForms
For I = 1 To 150000   ' Lance la boucle.
   If I Mod 1000 = 0 Then    ' Lorsque la boucle s'est
                           ' répétée 1000 fois.
      OpenForms = DoEvents   ' Cède le contrôle au
                           ' système d'exploitation.
   End If
Next I   ' Incrémente le compteur de boucle.


A+
Exploreur

 
Messages postés
6
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
19 avril 2007

A ba merde parce qu'en faite je ping 255 adresses dans une boucle.


C'est vrai que DoEvents m'a quand meme permis de gerer un peu mieux cela mais il arrive tout de meme que mon bouton exit ne marche pas.


Ou alors il faut que j'insiste un peu sur le bouton. Il n'y a vraiment pas de solution ?
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
33
met un doevents entre chaque ping

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
18
C'est ce qu'il fait, pour autant un prog ne doit pas figer tout le temps que peut prendre un ping, XP ou Vista va virer le prog avec l'habituel "le programme ne répond pas".

ciao...
BruNews, MVP VC++
Messages postés
6
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
19 avril 2007

Ouais c'est un peu cela et ca me pose un probleme car quand l'adresse ne repond pas ca prend du temps.