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 :

Multi-threading barre de traitement


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Administrateur réseau
    Inscrit en
    Mai 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur réseau

    Informations forums :
    Inscription : Mai 2009
    Messages : 58
    Points : 41
    Points
    41
    Par défaut Multi-threading barre de traitement
    Bonjour,

    Dans mon programme on peut consulter des tables sql grâce à un bouton. Comme certaines tables contiennent énormément de lignes (+700 000), l'interface reste figée durant la récupération des données.

    j'ai mis en place un progress bar lancée dans un thread pour montrer que l'application est toujours active, mais je voudrais bien que l'utilisateur puisse continuer à utiliser l'interface principale pour consulter d'autres tables moins grands par exemple.

    j'ai essayé de mettre le thread de la progress bar en "IsBackground = true" ou de modifier la priority mais sa ne marche pas.

    voici mon code:

    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
     
    this.T = new Thread(new ThreadStar(Recuperation));
    //this.T.Priority = ThreadPriority.Normal;
    this.T.IsBackground = true;
    this.T.Start();  
     
    _Management_SQL_SERVER_2005.IU.F_FACTURE Ffact;
    Ffact = new F_FACTURE();
    Ffact.Show();
    this.T.Abort(); 
     
     
    private void Recuperation()
    {
     
    _Management_SQL_SERVER_2005.IU.Barretraitement Fbar;
     
    Fbar = new Barretraitement();
     
    Fbar.ShowDialog();
     
     
    Application.DoEvents();
     
    }
    merci d'avance

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par kmtaz Voir le message
    j'ai mis en place un progress bar lancée dans un thread
    Fais le dans l'autre sens. Lance ton processus métier dans un autre thread.
    ಠ_ಠ

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    un backgroundworker ne ferai pas l'affaire pour la recuperation de tes lignes?

  4. #4
    Membre du Club
    Profil pro
    Administrateur réseau
    Inscrit en
    Mai 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur réseau

    Informations forums :
    Inscription : Mai 2009
    Messages : 58
    Points : 41
    Points
    41
    Par défaut
    merci pour vos réponses

    un backgroundworker peut aussi faire l'affaire mais je souhaite utiliser les threads.

    je ne comprend pas, dès le départ le thread principal est lancé, je suis obligé de lancer la progress bar dans un autre thread non?

    encore une question, est-ce que l'utilisation du threadpool serait la solution? je penche en ce moment dessus.

  5. #5
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par kmtaz Voir le message
    je ne comprend pas, dès le départ le thread principal est lancé, je suis obligé de lancer la progress bar dans un autre thread non?
    Non

    En WinForm toute la partie graphique est gérée par le thread principal de l'application. Seul ce thread à le droit de modifier la partie graphique, sinon tu te prends une belle exception au visage.

    Donc quand tu as une barre de progression, tu dois avoir ton traitement sur un thread à part avec de temps en temps des accès au thread principal pour pouvoir gérer la progression (partie graphique). Ce que fait très bien le BackgroundWorker
    Pas de questions techniques par MP

  6. #6
    Membre du Club
    Profil pro
    Administrateur réseau
    Inscrit en
    Mai 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur réseau

    Informations forums :
    Inscription : Mai 2009
    Messages : 58
    Points : 41
    Points
    41
    Par défaut
    Merci pour ces précisions je vais faire avec le BackgroundWorker alors, je pensais que c'était possible avec les threads mais il faut constater que non

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    mais si

    Tout ce que tu fais avec les backgroundWorker peut-etre fait avec les Threads.
    C'est juste qu'un certain nombre de mécanisme sont déja réalisé dans les BGW
    alors qu'avec les threads, tu es à un niveau plus "bas".
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  8. #8
    Membre du Club
    Profil pro
    Administrateur réseau
    Inscrit en
    Mai 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur réseau

    Informations forums :
    Inscription : Mai 2009
    Messages : 58
    Points : 41
    Points
    41
    Par défaut
    Je vais chercher encore de mon côté et si j'y arrice vraiment pas je reviendrai poster.

    Merci pour toutes ces informations

Discussions similaires

  1. [Multi-Thread] Mettre un msg d'attente lors d'un traitement long
    Par pepito62 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 29/03/2013, 20h43
  2. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  3. optimiser un traitement par du multi-threading
    Par in dans le forum Général Java
    Réponses: 10
    Dernier message: 10/10/2006, 09h46
  4. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

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