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:
Fichier DrawingOpenerForm.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(); }
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); } }
Partager