Backgroundworker et Progressbar [Résolu]

ahikaz 71 Messages postés jeudi 9 décembre 2004Date d'inscription 7 décembre 2007 Dernière intervention - 8 nov. 2007 à 16:40 - Dernière réponse : krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention
- 25 juil. 2011 à 10:57
Salut,

Dans mon application, j'utilise un backgroundworker pour faire une requête SQL et la création d'un fichier. Lors de l'avancement, je fais des écritures dans un textbox.
Mais, je veux utiliser aussi un progressbar qui évolue avec les traitements et donc normalement d'après ce que je pense je dois entrer dans une boucle while qui teste si le backgroundworker effectue encore son travail ou non. Est-ce qu'il existe un truc isAlive pour backgroundworker  comme pour les threads ?

Merci.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 8 nov. 2007 à 17:13
3
Merci
Salut,

Pas besoin de faire une boucle. Le backgroundworker possède un événement ProgressChanged.
Lors de ton traitement (donc dans l'événement DoWork du backgroundworker), tu faire appelles à la méthode ReportProgress (du backgroundworker). Ca déclenchera l'événement ProgressChanged et là, tu pourras mettre à jour ta barre de progression.

Pour savoir quand ton traitement est terminé, il te faut capturer l'événement RunWorkerCompleted.

Cordialement.

Merci cs_niky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_niky
ahikaz 71 Messages postés jeudi 9 décembre 2004Date d'inscription 7 décembre 2007 Dernière intervention - 12 nov. 2007 à 16:40
0
Merci
Merci.
Commenter la réponse de ahikaz
rocaro 4 Messages postés jeudi 28 avril 2005Date d'inscription 28 mai 2008 Dernière intervention - 14 mai 2008 à 16:12
0
Merci
Bonjour,


je débute en c#. J'effectue un traitement assez long, de ce fait, j'utilise un Backgroundworker pour pouvoir cliquer sur le bouton annuler pendant l'operation. J'ai vu que l'on pouvait passer un parametre a la methode DoWork mais moi je voudrais en passer 4, comment faire ?

Merci d'avance

Caro
Commenter la réponse de rocaro
cs_niky 168 Messages postés jeudi 28 juin 2001Date d'inscription 18 octobre 2008 Dernière intervention - 14 mai 2008 à 19:39
0
Merci
Bonjour,

Le paramètre que l'on peut passer est de type object. Par conséquent, il peut s'agir de n'importe quoi (object étant à la racine de tous les objets) : int, double, List, Array, etc.

Typiquement, pour passer 4 paramètres (par exemple 1 entier et 3 chaînes de caractères) :
object[] parameters = new object[] { 15, "Hello", "World", "GoodBye");
// Démarrage du backgroundworker
bg.RunWorkerAsync(parameters);

// Récupération de l'argument dans la méthode DoWork :
private void bg_DoWork(object sender, DoWorkEventArgs e)
{
object[] parameters = e.Argument as object[];

int quinze = parameters[0] as int;
string hello = parameters[1] as string;
string world = parameters[2] as string;
string goodbye = parameters[3] as string;

// Le long traitement...
// ...
}
Commenter la réponse de cs_niky
YuneSh 22 Messages postés lundi 3 janvier 2011Date d'inscription 5 août 2011 Dernière intervention - 23 juil. 2011 à 23:07
0
Merci
VP je charge des données lus d'une base de données dans ma datagridview en utilisant un simple MyDataGrid.DataSource = MaDataSet.Tables["MaTable"]; mais puis que le chargement des données et lent je veux mettre un progressBar pour indiquer à l'utilisateur que le traitement et en cours ! Pourtant je n'ai aucune idée de comment manipuler une progressBar ...
j'ai Besoin du code SVP
Merci
Commenter la réponse de YuneSh
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 25 juil. 2011 à 10:57
0
Merci
Bonjour

Le problème est que ta méthode ne permet pas de savoir où en est le chargement. Donc ta ProgressBar doit être en mode "Marquee"

Tu dois donc insérer ce code avant le chargement.
maProgressBar.Style = ProgressBarStyle.Marquee;

Et insérer celui-ci après.
maProgressBar.Style = ProgressBarStyle.Continuous;
// Tu peux également remplir la progressBar ainsi
maProgressBar.Value = 100;


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Commenter la réponse de krimog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.