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#] Afficher une progress bar pendant une tâche de fond


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 85
    Points : 62
    Points
    62
    Par défaut [C#] Afficher une progress bar pendant une tâche de fond
    Bonjour,

    J'aimerais afficher une Form contenant une ProgressBar et un bouton d'annulation pendant l'exécution d'une tâche de recherche sur le contenu de fichiers. Cette recherche s'effectue en lançant un autre logiciel à partir d'une référence COM sur cette application. J'aurais voulu utiliser le composant BackgroundWorker pour faire cela, mais je n'arrive pas à lui passer d'objet de type System.COMObject... et même en faisant tourner la recherche dans un thread séparé mon interface graphique est gelée... La valeur de la progressBar n'est pas très importante, elle est surtout là pour indiquer qu'une opération est en cours.

    Comment faire pour ne pas avoir mon interface graphique gelée? Merci d'avance de votre aide.

    Voici un aperçu du code:

    Fichier program.cs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     if (interact.connectInventor()) // Vérifie si Autodesk Inventor est lané
                {
                    DrawingOpenerForm f=new DrawingOpenerForm(interact.InventorApply, new CultureInfo("fr-FR")); // Passage de la référence sur l'application et la langue
                    f.Show();
                    f.LauchSearch();
                }
    Fichier DrawingOpenerForm.cs:
    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
     
            public void LauchSearch()
            {
                // Start search
                Thread t1 = new Thread(new ThreadStart(LaunchObject));
                LaunchProgressBar();
            }
     
            public void LaunchObject()
            {
                DrawingOpenerTools drawingOpenerTool = new DrawingOpenerTools(_oApplication, _oActiveCulture);
                drawingOpenerTool.OpenAssociatedDrawingFile(); // Effectue la recherche proprement dite et ouvre le fichier de résultat dans Inventor si la recherche aboutit
            }
     
            public void LaunchProgressBar()
            {
                for (int i = 1; i <= 100; i++)
                {
                    drawingSearchProgressBar.Value = i;
                    Thread.Sleep(50);
                }
            }

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Points : 22
    Points
    22
    Par défaut
    J'ai peut-être rien compris, mais ... tu as essayé d'instancier et d'afficher ta form dans un autre thread séparé ?

    Tu crées un delegate qui permettra de créer ta DrawingOpenerForm, puis de l'afficher et d'appeler la méthode LauchSearch()...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    Non, je ne cherche pas à instancier ma form dans un thread séparé, c'est juste l'opération de recherche que je lance dans un thread séparé.

Discussions similaires

  1. Une progress bar pendant l'execution d'une requete SQL
    Par stef2000 dans le forum VBA Access
    Réponses: 9
    Dernier message: 09/02/2008, 23h58
  2. progress bar dans une status bar ?
    Par raggadoll dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/11/2005, 15h17
  3. [MFC] Utilisation d'une progress bar
    Par nmarf dans le forum MFC
    Réponses: 2
    Dernier message: 12/09/2005, 10h42
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  5. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 09h23

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