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 :

Ecran de chargement


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Mai 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2009
    Messages : 99
    Points : 124
    Points
    124
    Par défaut Ecran de chargement
    Bonjour,

    J'aimerai dans mon application ouvrir un form avec le logo de la boite ou je travaille, et marqué : Chargement des données en cours merci de patienter.

    Je voudrais afficher ce form pendant que mon logiciel remonte des données d'une database sur le réseau.

    Cependant lorsque je l'affiche, le form freeze et ne s'affiche pas correctement.

    J'ai essayé de l'afficher dans la form parente, puis grâce à la propriété shown ( qui est censé attendre l'affichage complet de la form) lancer mon code, mais le freeze parvient toujours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub wait_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
     
            Dim mois As String = ModuleGeneral.RetourneMoisChiffre(MenuPrincipal.cb_Selmois.SelectedItem.ToString())
            Etape1.RemonteStock(MenuPrincipal.dgv_stockqtyetape1, mois)
            Etape1.RemonteStockValeur(MenuPrincipal.dgv_stockvaletape1, mois)
            Etape1.RemonteStockEnCours(MenuPrincipal.dgv_encoursetape1)
            Me.Close()
    End Sub
    J'ai suivi les tuto pour effectuer un BackGroundWorker, mais je dois manipuler des fonctions dans des modules, et des composants de mon interface ( DataGridView, ComboBox etc...) et au bout de 7heures d'essai j'ai abbandonné.

    Existe t'il vraiment une procédure qui attend l'affichage complet d'une form avant de lancer du code ?

    Merci de vos futures réponses et de votre lecture.

  2. #2
    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
    ce n'est pas une question d'affichage complété ou non

    http://www.developpez.net/forums/d94...e/#post5337040
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier
    Inscrit en
    Mai 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2009
    Messages : 99
    Points : 124
    Points
    124
    Par défaut
    D'accord, j'ai bien compris ce problème de thread principal, mais je me demandais si ce n'était pas possible de freezer l'appli une fois que le logo et le texte c'était affiché .
    Sinon est-ce possible d'executer l'affichage de la form "wait" dans l'autre thread pour contourner le problème de l'interaction avec l'UI du form parent ?

    Merci de la rapidité de ta réponse

  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
    si tu veux freezer une fois l'affichage fait, c'est faisable, tu poses un timer à 200ms démarré sur l'évènement shown de la fenetre, et dans le tick du timer tu exécutes ton code
    si ca prend plus de 2 secondes ca risque d'être quand même dérangeant pour l'utilisateur, y aura écrit "ne réponds pas" et il y a aura peut etre le bouton "terminer l'application" qui va apparaitre

    après en méthode simple il y a aussi le application.doevents
    cette ligne de code à pour effet de mettre en pause le code où il est dans le thread principal pour gérer les évènements en attente sur ce meme thread principal (et donc rafraichir l'interface)

    donc en mettre un toutes les 500ms environ peut solutionner le problème

    mais le mieux, c'est de faire le chargement des données sur un thread séparé, en utilisant l'objet backgroundworker de la boite à outils par exemple
    tu as un évènement pour faire le boulot et à la fin ca déclenche un évènement pour dire que c'est fini, et donc là tu pourras fermer ton splashscreen (nom d'un écran de chargement dans le jargon) et ouvrir ton form principal
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre régulier
    Inscrit en
    Mai 2009
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2009
    Messages : 99
    Points : 124
    Points
    124
    Par défaut
    La remontée des données dure environ 5minutes
    C'est une base non relationelle que je dois remonter en faisant moi meme les index/jointures pour pouvoir utiliser des objets ADO.NET ( je raconte pas le bordel )

    Je vais retenter le background worker, en fait j'avais réussi à l'utiliser sur des exemple que je me suis "amusé" a créer pour tester le truc, mais quand je dois placer en paramètre de l'event des objets tableaux d'objets pour les envoyer aux threads, j'ai la migraine qui arrive. Puis c'est l'erreur d'objet non instancié qui apparait en vert.
    Je vais re-tester ça ce week-end chez moi du coup si c'est la seule solution pour ne pas bouffer mon temps de projet

    Merci à toi de tes réponses

  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
    l'event permet de passer des paramètres certes, mais tu peux très bien remplir des variables ailleurs et ne rien relayer dans l'event de fin puis lire les variables chargées
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Ecran de chargement
    Par LastSpear dans le forum OpenGL
    Réponses: 8
    Dernier message: 11/08/2009, 15h38
  2. Ecran de chargement qui ne marche pas !
    Par yrauma dans le forum Flash
    Réponses: 2
    Dernier message: 12/02/2009, 16h19
  3. Ecran noir chargement XP
    Par CHP123 dans le forum Composants
    Réponses: 27
    Dernier message: 11/03/2008, 17h51
  4. [VB.net] Ecran de chargement
    Par Speranza dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/05/2006, 16h50
  5. [DGraphics]Ecran de chargement
    Par delire8 dans le forum DirectX
    Réponses: 6
    Dernier message: 26/09/2003, 21h34

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