ahikaz
Messages postés71Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention 7 décembre 2007
-
8 nov. 2007 à 16:40
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 2015
-
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 ?
cs_niky
Messages postés168Date d'inscriptionjeudi 28 juin 2001StatutMembreDernière intervention18 octobre 20087 8 nov. 2007 à 17:13
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.
rocaro
Messages postés4Date d'inscriptionjeudi 28 avril 2005StatutMembreDernière intervention28 mai 2008 14 mai 2008 à 16:12
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 ?
cs_niky
Messages postés168Date d'inscriptionjeudi 28 juin 2001StatutMembreDernière intervention18 octobre 20087 14 mai 2008 à 19:39
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...
// ...
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
YuneSh
Messages postés22Date d'inscriptionlundi 3 janvier 2011StatutMembreDernière intervention 5 août 2011 23 juil. 2011 à 23:07
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