Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

THREAD ET PROGRESSBAR - EXEMPLE SIMPLE


Information sur la source

Catégorie :Astuces Source .NET ( DotNet ) Classé sous : thread, progressbar, crossthread, invoke, begininvoke Niveau : Débutant Date de création : 12/11/2006 Date de mise à jour : 13/11/2006 08:39:43 Vu / téléchargé: 21 199 / 3 606

Note :
9 / 10 - par 5 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Voici une petite source qui montre comment indiquer dans une ProgressBar l'avancement d'une tache lourde effectuée dans un autre Thread que celui ayant créé la ProgressBar. Ici, la "tache lourde" correspond a la compression de fichiers, mais ce n'est pas le but de la source.

Cette question étant plus ou moins récurrente dans le forum, cette source illustre de façon utile l'utilisation de délégations synchrones/asynchrones comme expliqué dans ce tutorial :
http://www.csharpfr.com/tutoriaux/CSHARP-OPERATIONS-CROSS-THREADS-UTILISATION-DELEGATIONS-SYNCHRONES-ASYNCHRONES_174.aspx


 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

12 novembre 2006 10:43:33 :
Petite correction dans le code
13 novembre 2006 08:39:43 :
Intégration des classes partielles

Commentaires et avis

signaler à un administrateur
Commentaire de coq le 12/11/2006 11:19:02 administrateur CS

Plutôt plus que moins d'ailleurs :p
Et surtout il y a vraiment nécessité d'insister sur l'utilisation d'Invoke et non pas le fond de teint CheckForIllegalCrossThreadCalls.

signaler à un administrateur
Commentaire de Bidou le 12/11/2006 11:58:29 administrateur CS

Bonne petite source, cepandant j'ai été surpris de constater que tu n'utilises pas les classes partielles (notemment au niveau design, pour la création des Controls)

signaler à un administrateur
Commentaire de MorpionMx le 12/11/2006 12:03:10 administrateur CS

Ouai, je pars du principe qu'une classe = un fichier. Surtout pour des petites sources comme ca. J'aime bien que tout soit dans le meme fichier (quitte a utiliser les #region quand ca prend beaucoup de place).
J'utilise les classes partielles surtout pour les classes nested ;)

signaler à un administrateur
Commentaire de TMONOD le 12/11/2006 12:07:27

Bonjour,
D'abord un vrai "merci", c'est vraiment le genre de sources que l'on souhaite trouver sur ce site.

Au sujet, de l'utilisation des classes partielles, Bidou a raison.
d'autant plus que la tendance est vraiment à la séparation bien .net euh, nette, de l'IHM et du code.
D'ailleurs, dans SharpDevelop (vous savez l'IDE libre qui permet aussi de programmer sous Mono) le template de base utilise une classe partielle.

Salutations


signaler à un administrateur
Commentaire de Nurgle le 12/11/2006 22:42:06 administrateur CS

jolie petite source,
Au moins ça apprend à manipuler correctement les threads :)

Personnellement, j'aurais utilisé un BackgroundWorker, et hop, un petit .ReportProgress avec en paramètre le pourcentage d'avancement de la progressBar et c'était fini. Mais bon, c'est la solution pour flemmard :o)
(et c'est plus limité, c'est vrai...)

par contre, pas de classes partielles... bahhh, ça me rappelles de mauvais souvenirs (.NET 1.x par exemple... :p)

signaler à un administrateur
Commentaire de TMONOD le 12/11/2006 22:58:44

Bonsoir,
Monsieur Nurgle, Vous êtes bon pour nous faire un tuto sur les BackgroundWorkers et les .ReportProgress !

signaler à un administrateur
Commentaire de rudhf le 13/11/2006 01:25:01

merci d'avoir fait cette source suite à ma question

signaler à un administrateur
Commentaire de sebmafate le 13/11/2006 06:35:12 administrateur CS

Avec le BackgroundWorker, il y a moyen de faire des choses très sympa ;)
il suffit juste de se souvenir qu'on fait de l'objet :D

Si j'ai le temps, je posterais une petite source qui explique ce que je viens de dire :p

signaler à un administrateur
Commentaire de MorpionMx le 13/11/2006 08:41:20 administrateur CS

Merci à tous pour vos commentaires.
"A la demande générale", j'ai modifié le zip et intégré les classes partielles ;)

signaler à un administrateur
Commentaire de Nurgle le 13/11/2006 16:53:40 administrateur CS

TMONOD > j'avais déjà postée une source là dessus : http://www.vbfrance.com/code.aspx?ID=38076
(d'accord, c'est du VB... mais bon :p)

signaler à un administrateur
Commentaire de TMONOD le 15/11/2006 00:45:11

Autant pour moi, On reproche toujours aux gens de ne pas consulter les sources existantes avant de l'ouvrir, et puis on fait la même erreur.
Depuis .net, j'ai du mal avec VB, le sentiment qu'une page doit se tourner mais qu'un paquet de gens s'accrochent désespérément à leurs APIs...
...non pas que je sois contre la bidouille sauvage...

Bonne nuit à tous.

(j'adore les 3 points ...)

signaler à un administrateur
Commentaire de fcolo le 17/11/2006 09:50:09

Franchement, très bonne source, très claire, bien commenté.
Je vais voir pour modifier le contexte (copie de repertoires/fichiers) en conservant ta structure.

Quel est l'intéré d'utiliser le using:
using (GZipStream gzip = new GZipStream(outputFile, CompressionMode.Compress))
plutot que directement declarer le GZipStream gzip ?

En tout cas, très bonne source, merci :)

f.colo

signaler à un administrateur
Commentaire de MorpionMx le 17/11/2006 09:58:17 administrateur CS

Merci :)

le using(IDisposable){ /* code */ } permet d'exécuter automatique la méthode Dispose() des objets instanciés  dans la parenthèse lors de la sortie du bloc using. En fait, c'est exactement la meme chose qu'un try/finally (dans lequel tu appelerais la méthode Dispose de tes objets), juste une façon différente de l'écrire (le code IL généré est sensiblement le meme).


A ne pas confondre avec la directive " using namespace; "

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Ajout d'un contrôle depuis un thread en utilisant Invoke... [ par gazous ] Bonjour,Je vous contacte car j'ai vu que vous étiez assez calé en dll.Mon problème :J'ai un thread qui essaye d'ajouter un contrôle dans un panel char ProgressBar et Thread [ par poullos ] Bonjour,J'ai lu pas mal de choses sur les progressBar sur le forum mais rien n'a répondu à ma question.J'ai plusieurs opérations associ Threads :freez de la ProgressBar [ par huberdine ] Bonjour,mon problème est le suivant :j'ai in Form contenant une ProgressBar, chargée d'afficher l'avancement d'un traitement (long) effectu& Question sur les thread [ par sliverman ] Bonjour à tous, tout d'abord je ne savais pas dans quelle catégorie mettre ce post...Donc je cherche depuis quelque jours comment utiliser une progres calcul dans un thread et affichage progressbar : des commentaires ? [ par el_teedee ] Bonjours à tous, c'est sans doute une chose que tout le monde à déjà rencontré. Un calcul qui prend du temps, et une form Invoke ou pas ? [ par crougni77 ] Salut tout le monde, mon first post, pour une petite question... voila j'ai une classe qui un méthode avec un traitement assez long. Cette m&#23 PB progressbar & thread [ par bibibiba ] Bonjour,J'ai une application qui se connecte a une base de données et qui doit remplir un doc word avec les informations collectées.J'ai une progressb Suspendre/Reprendre Thread [ par Leucistic ] Bonjour, J'ai crée un thread qui sert de chronomètre (affiche le temps sur un label).Je souhaiterais pouvoir suspendre/reprendre ce thread selon les a Opération inter thread [ par thebigboss ] Bonjour,je fais un petit soft qui comporte une fenêtre principale et une fenêtre secondaire. La fenêtre secondaire est crée à l'ouverture de la fenetr Thread + Form.Show(); [ par thebigboss ] Bonjour,je fais un bout de code qui pourrait être résumé par le code suivant:J'ai une MainForm qui crée un objet Form2: Form2 frm2=new Form2();Mais sa


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.