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 :

Problème avec Thread


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de libremax
    Profil pro
    Chargé de projets
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de projets

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Points : 91
    Points
    91
    Par défaut Problème avec Thread
    Bonjour à tous,
    Je développe actuellement une Gmao et dans ce programme j’ai un problème de freeze de formulaire.
    Mon programme fonctionne de la façon suivante :
    J’ai un formulaire principal (le menu) dans lequel il y a des picturesbox.
    Quand je clique sur l’un picturebox j’ouvre un autre formulaire, le formulaire ouvert comporte en général beaucoup d’informations et en plus il lance des requêtes sur SQL server qui prennent aussi un certain temps.
    Afin que l’utilisateur final ne pense pas qu’il est planté je veux ouvrir un petit formulaire(splash) pour afficher un GIF (cela permettrai de montrer le traitement).
    J’ai utilisé plusieurs techniques mais le résultat reste pareil le formulaire avec le GIF freezer et ce rafraichis seulement quand tous les formulaires sont chargés. Ce n’est pas l’effet voulus.
    dans le Load du 2éme formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
      Cursor = Cursors.WaitCursor
      Me.Icon = Ico_IconeGmao
      Me.Topmost = False
      Int_Index = 0
      Bol_ModeRafraichissement = True
      Me.KeyPreview = True
      Splash.show()
      Splash.topmost = True
      Thr_Monthread = New Thread(Sub()
                       If Cls_Ouverture_Connexion_Sql() = True Then
                       	Application.Exit()
                        Exit Sub
                       End If
                       If Cls_Ps(0, Grid_Fournisseur, True, False, 76, "Ps_xxx") = True Then Sub_Exit()If Cls_Fermeture_Connexion_Sql() = True Then
                         Application.Exit()
                         Exit Sub
                       End If
                       Sub_Rafraichissement()
                      Bol_ModeRafraichissement = False
                      Sub_Cursor()
                      Splash.close()
                      '*****************************
                      '** on arrete le MultiTache **
                      '*****************************
                      Return
     
                      End Sub)
    Thr_Monthread.Start()
    Quelqu'un aurait il déjà eu le problème ?

    Merci d'avance.
    Débutant un jour, débutant toujours car chaques jours qui passent nous en apprend un peu plus.

  2. #2
    Membre éprouvé Avatar de worm83
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Février 2010
    Messages
    459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2010
    Messages : 459
    Points : 1 118
    Points
    1 118
    Par défaut
    Peut être parce que tu fait ce traitement dans le load....
    Fait le traitement dans l'event de fin de load (Loaded ou EndLoad je sais plus).
    "Le train de tes injures roule sur le rail de mon indifférence."

    "Monde de merde !!"

    Georges Abitbol.

  3. #3
    Membre régulier Avatar de libremax
    Profil pro
    Chargé de projets
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de projets

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Points : 91
    Points
    91
    Par défaut re
    tout d'abord bonjour et merci de me répondre,

    Effectivement le traitement se passe bien dans le load mais je ne connais pas cette évènement (endload)?
    j'ai fait l'essai dans le shown mais cela ne marche pas non plus.
    Débutant un jour, débutant toujours car chaques jours qui passent nous en apprend un peu plus.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le code que tu nous mets ne permet pas de déterminer d'où vient le blocage
    par contre quand ca freeze, tu peux mettre pause dans visual studio pour voir où le code est exécuté actuellement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre régulier Avatar de libremax
    Profil pro
    Chargé de projets
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de projets

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Points : 91
    Points
    91
    Par défaut re
    En fait le code continu a s'exécuté mais c'est le rafraichissement visuel qui freeze.
    si je fait des refresh ou des pauses dans le thread ça n'y fait rien.
    Débutant un jour, débutant toujours car chaques jours qui passent nous en apprend un peu plus.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ca on a bien compris

    mais quand ca freeze tu fais pause et tu verras à quel endroit du code ca freeze (vérifier la liste des threads pour voir où tous en sont si nécessaire)


    enfin si ca freeze c'est qu'il reste du code qui est exécuté sur le thread principal


    au démarrage l'appli a un thread, qu'on appel thread principal
    ce thread exécute ton code, mais sert aussi à redessiner l'interface fréquemment
    comme un thread ne peut faire qu'une chose à la fois, quand il exécute ton code l'interface n'est pas rafraichit
    aussi on déporte donc tout ce qui peut potentiellement durer plus de que quelques centaines de milliseconde sur un autre thread
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Problème avec threads après mise à jour
    Par issoram dans le forum Modules
    Réponses: 2
    Dernier message: 20/05/2009, 12h18
  2. Problème avec Thread et NotifyAll()
    Par Florianter dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 01/01/2009, 21h39
  3. Probléme avec Thread
    Par infoelectronique dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 06/10/2008, 14h48
  4. Problème avec Thread
    Par demcoul dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 16/03/2007, 11h53
  5. Problème avec Thread
    Par halic dans le forum C#
    Réponses: 2
    Dernier message: 08/02/2007, 14h15

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