IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Pourquoi mon form freeze et se bloque apres reduction/restauration ? [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut Pourquoi mon form freeze et se bloque apres reduction/restauration ?
    Bonjour,
    Je rencontre un petit souci avec un petit log en vb.net.
    Il est composé de 2 forms et chaque form a, pour des raisons pratiques, les icones de reduction, fermeture et restauration.

    Mon problème est le suivant :
    Losrqu'un form est ouvert (quel que soit le form et que ce soit sous seven ou XP) si je le reduis pour le mettre en barre des taches, et que je restaure a sa taille normale ensuite, voici ce qui se passe :
    - le formulaire se bloque : impossible d'ecrire dedans ou de cliquer sur quelque bouton que ce soit
    - la barre superieure (avec les boutons de reduction etc ...) ne s'affiche plus et si par hasard elle s'affiche quand meme, je ne peux rien faire dessus.

    Quel peut être le souci ???

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Que ton application fait des traitements lourds et/ou répétitifs sans utiliser de thread. Donc ton application est bloqué pendant le temps de l'opération avant d'être libéré et de pouvoir faire le traitement de réaffichage.


    Il faut donc utiliser un BackGroundWorker (c'est un "thread" amélioré)

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Il se passe que tu dois avoir une boucle infinie probablement ou un traitement long

    EDIT : Oops devancé

  4. #4
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    ouille ....... c'est ecrit débutant au début du post ..... alors la vous me parlez dans un langage que mes neurones ont beaucoup de mal à décrypter .........

    En plus, ce que je ne comprends pas, c'est que je ne fais que reduire le form, par exemple, je lance le logiciel, je fais "reduire" sans solliciter le moindre calcul, je reagrandis et c'est la que ca bloque.
    Il s'agrandit mais plus de barre, souvent plus de boutons et freeze. Oblige de passer par un crtl + alt + suppr pour fermer le log

    Pourtant je n'ai lancé aucune séquence de calcul

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 194
    Par défaut
    Change de PC


    Sinon
    Difficile de comprendre le problème quand on a pas le code et qu'on ne voit pas le comportement

    La 2eme form n'est pas lancée via ShowDialog() qui rend inaccecible la 1er?
    que font tes 2 form?

  6. #6
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    non non pas de ShowDialog() dans le code.

    En fait les 2 forms font des calculs
    le form1 permet d'entrer les données et de calculer quelques valeurs

    l'appui sur un button du form1 lance le form2 superposé au form1 et lance une sequence de calcul qui s'execute en environ 1 seconde

    par contre mes forms sont en centerscreen et locked volontairement. Ne serait ce pas ca des fois ?

  7. #7
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    As-tu du code dans l'évènement Activated du formulaire que tu restaures ? Si oui, ce code va être exécuter et si le traitement qu'il est effectue est long, ton programme freeze.

    Possible aussi qu'il exécute du code qui se trouve dans l'évènement Shown si tu en as mis mais c'est à vérifier (je n'utilise jamais ce dernier).

  8. #8
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Citation Envoyé par BenoitM Voir le message
    Difficile de comprendre le problème quand on a pas le code et qu'on ne voit pas le comportement
    Comme l'a dit BenoitM, montre-nous le code, sinon on va pas y arriver...

  9. #9
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Moi je mise sur une boucle infinie

  10. #10
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Par défaut
    c'est pas que je ne veux pas donner le code mais en tout y a bien 800 lignes .........

    Et pour lever le doute, j'ai juste fait une reduction agrandissement du form1 sans aucune séquence de calcul, .... idem .... freezage sans aucun retour à la normale

  11. #11
    SLE
    SLE est déconnecté
    Membre émérite Avatar de SLE
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 604
    Par défaut
    Fais un .zip avec ton code et poste le fichier comme pièce jointe.

  12. #12
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    Citation Envoyé par Attila54 Voir le message
    ouille ....... c'est ecrit débutant au début du post ..... alors la vous me parlez dans un langage que mes neurones ont beaucoup de mal à décrypter .........

    pendant l'exécution de ton code, l'interface ne peut pas être rafraichit
    c'est pour ca qu'il ne faut pas écrire dans une méthode du code qui dure plus de quelques centaines de millisecondes, sinon "ne répond pas" et autres freeze

    si ca freeze longtemps puis que ca defreeze ca veut dire que ton code est trop long
    si ca freeze à l'infini c'est que ton code est surement dans une boucle infinie

    quand tu fais du pas à pas, il y a une ligne jaune qui te montre où en est l'exécution, ceci est un thread
    un thread n'exécute qu'une ligne de code à la fois
    le rafraichissement de l'interface est fait par le même thread que ton code, c'est pour ca que pendant que c'est dans ton code, l'interface n'est pas rafraichit

    il est alors possible quand on a des choses longues où potentiellement bloquantes à faire de le faire sur un autre thread (on peut avoir plusieurs centaines de threads par processus)
    avec 2 threads, il y a l'équivalent de plusieurs lignes jaunes de debug à des endroits différents
    en déportant un traitement sur un thread secondaire, le thread principal peut alors rafraichir l'interface, n'ayant rien d'autre à faire
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/06/2011, 10h39
  2. Pourquoi mon compteur retourne a 0 apres 374?
    Par pierrot10 dans le forum Langage
    Réponses: 5
    Dernier message: 01/02/2008, 11h42
  3. Mon programme se bloque après quelques heures!
    Par mbouzouita dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 30/11/2007, 21h51
  4. Réponses: 6
    Dernier message: 19/11/2006, 00h41
  5. Réponses: 6
    Dernier message: 13/04/2006, 15h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo