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

Windows Forms Discussion :

[C#] Plusieurs Thread pour éviter le freeze du chargement


Sujet :

Windows Forms

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut [C#] Plusieurs Thread pour éviter le freeze du chargement
    Bonjour à tous,

    J'ai une application qui reflète pas mal de données en base de donnée, avec des procédure stockées qui font pas mal de calcul avant de retourner les différentes valeurs que l'application a besoin etc... et tout ça, c'est long à charger.

    Donc actuellement, je charge tout ça au chargement de mon formulaire, mais lorsque ça charge, ça freeze.

    J'aimerai que l'IHM se charge correctement et qu'en même temps un processus va récupérer les données pour qu'on puisse voir l'IHM se remplir petit à petit.

    Donc j'ai fait ça:

    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
     
            delegate void LoadCallback();
     
            private void MainWindow_Shown(object sender, EventArgs e)
            {
                System.Threading.Thread oThread = new System.Threading.Thread(new System.Threading.ThreadStart(LoadRessources));
                oThread.Start();
            }
     
            private void LoadRessources()
            {
                LoadCallback d = new LoadCallback(Load2);
                this.Invoke(d, new object[] {});
            }
     
            private void Load2()
            {
                    // chargements
            }

    J'ai fait ça en reprenant les exemple de la MSDN concernant les Thread safty je sais pas quoi, mais mon formulaire freeze toujours jusqu'à ce que les données soient entièrement chargées

    Qu'est-ce que je peux faire pour remédier à ça?

    Merci

    A bientôt

  2. #2
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Regarde plutot du composant BackgroundWorker...

    tu as un evenement DoWork de ce composant ..

    dans cet evenement tu mets ton code pour charger les données...

    pour lancer le traitement tu fais un RunAsyncrone au moment du load...

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 824
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 824
    Points : 1 544
    Points
    1 544
    Par défaut
    Merci beaucoup, je note et j'essayerai lundi, et je te tiens au jus

    Merci

Discussions similaires

  1. [XL-2010] PivotFields pour plusieurs champs et pour éviter PivotSelect
    Par mouftie dans le forum Excel
    Réponses: 0
    Dernier message: 03/06/2014, 12h26
  2. [WD19] Plusieurs thread pour même requête
    Par Invité dans le forum WinDev
    Réponses: 11
    Dernier message: 15/05/2014, 18h23
  3. Raffraichir l'UI pour éviter un freeze
    Par deathness dans le forum SWT/JFace
    Réponses: 8
    Dernier message: 23/12/2011, 20h48
  4. Éviter plusieurs sessions pour un même utilisateur
    Par Evocatii dans le forum Langage
    Réponses: 7
    Dernier message: 31/03/2008, 15h19
  5. [THREAD][BLOCKINGQUEUE] Comment éviter un 'freeze' ?
    Par narmataru dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 18/09/2006, 13h01

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