Programme en vb6 [gestion mémoire]

Fermé
progg Messages postés 166 Date d'inscription mardi 13 juillet 2004 Statut Contributeur Dernière intervention 3 février 2007 - 11 sept. 2005 à 19:36
 Blaise - 19 janv. 2007 à 11:58
Bonjours à tous,
Je programme en vb depuis quelques années maintenant mais comme j'ai appris tout seul, j'ai des problème que je n'arrive pas à résoudre. Mon problème le plus gênant étant la gestion de la mémoire dans mes programme.
En fait j'ai une passion pour tous ce qui est générateur de nombres aléatoires et autres trucs de ce genre mais lorsque je met en marche mon prog, l'interface ce bloque tant qu'il n'a pas trouvé ce que je lui demande. Or j'aimerais bien que mon bouton stop arrête la boucle quand je clique dessus mais comme l'interface est bloqué cela ne fonctionne pas. J'ai même essayé de mettre un timer pour stopper la boucle au bout de 15s mais même le timer se bloque.

J'espère que vous avez compris mon problème car j'ai un peu de mal à le formuler vu que c'est mon plus gros problème. Alors pour simplifier je cherche comment arrêté une boucle avec un bouton stop et que mon interface ne se bloque pas.

Merci d'avance

@+

Configuration : Processeur AMD athlon 2200+ (1.8ghz) ; Windows XP
A voir également:

3 réponses

Vb est événementiel. Pour pouvoir arrêter, via un bouton un traitement il faut que ce dernier laisse la main à l'événment click du bouton (de même que pour l'événment Timer). Une instruction "DoEvents" permet de laisser la main au prochain évenement enattent. Si il n'y aplus d'évenment le traitement continue.

Généralement, pour arreter un traitement par un bouton Cancel, il faut décalrer une variable booleenne au niveau global (vissible par le bouton et par le traitement) gbCancel. L'initialiser au début du traitement gbCancel = false. Dans la boucle de trairtement, il faut ajouter des

call DovEvents
if (gbCancel ) then
' Sortir du traitement proprement
' fermeture des recordset ...
' déallocation des tableaux dynamiques ...

MsgBox "Traitement annulé!!!"
Exit sub
end

Dans leclic du bouton cancel, il faut simplement faire
gbCancel = true

Attention!!! DoEvents donne la main eu premier événement en attente (comme par exemple la fermeture de la fenêtre, le bouton de lancement du traitement). Il est important de ne pas pouvoir lancer deux fois le traitement. Donc il faut au debut du traitement rendre non disponible toutes les actions non souhaitable pendant celui-ci et les rendrres de nouveau disponible à la fin.
1
a mon humble avis la seule solution pour realiser deux taches en meme temps (calcul aleatoire et gestion dinterface) est des creer des "THREADS"(sortes de processus qui simulent deux activités parallèles).n'étant pas spécialiste en vb je te conseille de te referer à l'aide de ton compilo.
0
hi i want your help please in vijuaj basic
0