Probleme de Freeze

Résolu
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020 - 19 juil. 2007 à 11:32
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 19 juil. 2007 à 16:07
Bonjour,

J'ai un probleme assez complexe, je vais tenter e l'expliquer du mieux que jai pu.

- J'ai creer un programme qui appelle  plusieurs fonctions les unes a la suite des autres (un programme assez long a l'execution ~10 secondes)
- Dans chaque fonction, je renvoie 0 si ca a bien marcher et -1 si je suis rentrer dans le morceau de code suivant (qui au passage stop la fonctiojn en cours)
On Error GoTo ErrorTreatment
.....
ErrorTreatment :
  Creation_Arbo = -1
  Exit Function
- Avant chaque appelle de fonction, je teste celle juste avant : si 0 passer a la suivante si -1 ecrire probleme avec la fonction "xxx" et arrete du programme.

Mon probleme est le suivant :
Je lance le programme et je touche a rien : tous ce passe tres bien
Je lance le programme et (par megarde) ma souris click sur une liste box ou ailleur (le programme est en train de mouliner et il detecte une activite souris) et la le programme freeze avec un
-Not Responding
-Envoyer le message d'erreur Send / Don't Send
la totale koi

Les question que je me pose
-Pourquoi ca freeze au lieu de me dire il y a eu un probleme avec la fonction "xxx"
-Est-ce que le probleme lié au click de la souris rentre dans un "On Error GoTo ErrorTreatment"

Merci de votre aide
Je me tient a otre disposition pour donner plus de détails si j'en ai pas donner assez

6xavier6
A voir également:

10 réponses

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
19 juil. 2007 à 11:49
Heeeeeeee, je n'ai pas de réponses à tes questions ,
mais te serait-il possible d'éviter que ce click ne sois possible (je
m'explique)

Au lancement de ton code (celui qui dure 10s) tu exécute une fonction qui contiens
un code du genre


Dim toto As Object

On Error Resume Next

    For Each toto In Me

        toto.Enabled = False

    Next

On Error GoTo 0


Par contre j'imagine que tout tes objets ne sont pas à enabled = true donc il vaudrait
que tu sauvegarde cette valeur pour la réutilisé à la fin du traitement et
remettre les enabled à true là ou ça vas bien. Un tableau dynamique de boolean
me paraîtrais parfais mais fais attention à la porté de cette variable. Ou tu peut
faire une fonction VerouDeverou qui reçois un paramètre l'informant si elle
dois verrouiller ou déverrouiller les objets en définissant un tableau static
(il vaudras peut être pensé à vider ce tableau au déverrouillage mais ça je te
laisse faire).


Possible ou non ??? A vrais dire je n'ai jamais fait de truc du genre


En tout cas bon courage.


Amicalement



Pensez "Réponce acceptée"
3
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
19 juil. 2007 à 12:41
Salut,

Ton programme peut pas à la fois être au four (C'est à dire dans tes fonctions longues) et au moulin (C'est à dire en train de s'occuper de ce que fait le curseur de ta form vis à vis de la souris).

Quand il est au four et que tu veux qu'il s'occupe du moulin, tu fais un DoEvents comme te l'as proposé Charles Racaud. Il faut donc en placer dans les boucles longues de ton four.

Le problème avec le moulin, c'est que l'utilisateur peut y faire n'importe quoi (Demander à ton programme d'aller au four par exemple).

C'est là que Polack77 entre en scène et propose de rendre les contrôles de ta form inopérants pendant que ton programme n'a pas fini d'être au four.

Là arrive DarkSid qui voit que tu as posté sous VB.NET et VB2005 alors que tu mets des on error goto dans ton code... Donc on peut te soupçonner d'avoir posté au mauvais endroit.

Plutôt que des DoEvents (Qui existe je sais plus dans quelle classe de VB.NET), on utiliserait plutôt un thread au four et un autre au moulin dans une application VB.NET.
3
Utilisateur anonyme
19 juil. 2007 à 11:36
Salut,

Ajoute des DoEvents dans les phases de traitement.







__________
Kenji

(


0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 juil. 2007 à 11:50
Heu... c'est du vb6 ou du vb.net ? (il me semble pas que les On Error goto aient survécue à la vague .net, si ?)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
19 juil. 2007 à 11:57
Ha, en effet, en dotnet, plus de On Error GoTo MachinTruc

Ca donne en dot net:


Try
   'Tu Code
Catch ex as Exception1
   'Tu Code: Raaah, ca marche paaaas
Catch ex as Exception2
   'Encore du code, misère, y'a rien qui marche
'Catch ex as Exception3 ... (etc)
Finally
   'Ca marche, ca marche pas ; on va la pour finir.
End Try





__________
Kenji

(


0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
19 juil. 2007 à 12:43
le curseur de ta form vis à vis de la souris -> le curseur de la souris vis à vis de ta form.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 juil. 2007 à 13:30
Les On Error Goto existent toujours en .Net. Et oui, ils n'ont pas ancore disparus. c'est comme la mauvaise herbe, difficile de s'en débarasser.

Et même Microsoft préconise dans certaines rares conditions de les préférer aux Try Catch. Conditions que je serais bien incapable de citer, déjà qu'en VB6, je faisais l'impossible pour ne pas à avoir à les utiliser ....

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
19 juil. 2007 à 13:38
Pb de freeze ? appelez Mister !

huhu ouai désolé je sais ce n'est pas du tout constructif comme remarque mais bon c'etait trop tentant

@+

E.B.
0
6xavier6 Messages postés 51 Date d'inscription jeudi 29 mars 2007 Statut Membre Dernière intervention 7 février 2020
19 juil. 2007 à 16:00
en effet jai bien posté au mauvais endroit

je ne suis ni en VB 2005 ni en VB.net masi bien en VB6.0

excuser mon erreur
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 juil. 2007 à 16:07
Ok c'est déplacé, et voilà encore comment perdre du temps à essayer de devenir le langage à cause d'une question posée dans le mauvais forum !
0
Rejoignez-nous