begin process at 2010 02 10 10:39:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > THREAD ET PROGRESSBAR - EXEMPLE SIMPLE

THREAD ET PROGRESSBAR - EXEMPLE SIMPLE


 Information sur la source

Note :
9,17 / 10 - par 6 personnes
9,17 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
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é :23 411 / 3 916

Auteur : MorpionMx

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (14)
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-OPERATI ONS-CROSS-THREADS-UTILISATION-DELEGATIONS-SYNCHRON ES-ASYNCHRONES_174.aspx




 Fichier Zip

Les Membres Club peuvent 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

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) CREATION D'ANAGLYPHES - PHOTOS EN RELIEF
Source avec Zip Source .NET (Dotnet) BULK COPY EXCEL VERS SQL SERVER
Source avec Zip Source avec une capture Source .NET (Dotnet) XNA FRAMEWORK : UTILISATION DE BOUDINGSPHERE ET BOUNDINGBOX
Source avec Zip Source avec une capture Source .NET (Dotnet) XNA FRAMEWORK : CRÉATION D'UN SCROLLINGBACKGROUND
Source avec Zip Source .NET (Dotnet) INSERTION ET RÉCUPERATION D'UNE IMAGE EN BASE DE DONNÉES

 Sources de la même categorie

Source avec une capture Source .NET (Dotnet) AJOUTER DES BYTES À UN EXECUTABLE par t0fx
Source .NET (Dotnet) COPIER/ COLLER DATAGRID (COPY/PASTE) par jamesbidon
Source avec Zip Source .NET (Dotnet) MECANISME DE SYNCHRONISATION DE THREAD - MONITOR, MUTEX, SEM... par jesusonline
Source .NET (Dotnet) EVENTHANDLERS GÉNÉRIQUES par ricklekebekoi
Source avec Zip Source .NET (Dotnet) TRAITER UN FOREACH EN PARALLÈLE par maitredede

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) THREADER SIMPLEMENT UNE CLASSE POUR INTERAGIR AVEC UNE FORM par Yxion
Source avec Zip Source .NET (Dotnet) MODIFICATION DE LA VALEUR D'UN CONTROLE À L'INTERIEUR D'UN T... par bestouinouin
Source .NET (Dotnet) BARRE DE STATUT ET DE PROGRESSION COMPATIBLE MULTITHREAD par cendretp
Source .NET (Dotnet) EXEMPLE D'UTILISATION DE CONTROL.INVOKE par coq
Source avec Zip Source .NET (Dotnet) INVOCATION ASYNCHRONE D'UNE FONCTION / WEBSERVICE par jesusonline

Commentaires et avis

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.

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)

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 ;)

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


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)

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 !

Commentaire de rudhf le 13/11/2006 01:25:01

merci d'avoir fait cette source suite à ma question

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

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 ;)

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)

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 ...)

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

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; "

Commentaire de vuduymackhai le 13/01/2010 16:42:34 10/10

Merci pour le code source...

 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 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 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 progress bar + thread [ par s7even ] bonjour, j'ai besoin de faire un form avec copie de répertoire + barre de progression pour l'avancement de la copie. Jusqu'ici tout va bien, ma progr Operation inter-thread [ par DedeSurf ] Bonjour, Je n'arrive pas à déclencher un event ou à exécuter une méthode via un thread pour mon thread principal. using System; using System.Collect Thread et menu contextuel [ par seblx ] Bonjour à tous,J'ai une form qui enregistre un menu contextuel (Shell) et qui lance un thread supplémentaire. Mon menu rajoute une action "S


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales