Bonjour !
Voila, j'ai une petite appli qui effectue un traitement assez 'long' à un moment donné, et je veux ajouter sur ma Form principale, un bouton annulé.
Sauf que, pendant le traitement, la form ne peut pas être utilisée (le thread ayant créé la form traite mon travail en cours).
Donc, je me suis mis dans l'idée de créer un thread qui exécuterait mon traitement qui est long, comme ca, ma Form reste utilisable.
Jusque la je pense être sur la bonne voie non ?
Je me suis retrouvé confronté à une erreur imprévue, celle où mon thread exécutant le traitement, doit modifier la Form, pour faire avancer une ProgressBar.
En fouillant sur le Net, j'ai trouvé des choses parlant de Delegate.
Mais, j'ai du mal à m'en servir, aussi pouvez vous m'aider?
Voici du code illustrant mes questions :
Déclaration de ma méthode délégué :
Lors d'un click sur un bouton, je créé mon Thread qui exécute le traitement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 private delegate void SetProgressBar(int iMaxValue, int iValue,int iStepValue,int iMinValue); private void SetProgressBarValue(int iMaxValue, int iValue, int iStepValue, int iMinValue) { myProgressBar.Maximum = iMaxValue; myProgressBar.Value = iValue; myProgressBar.Step = iStepValue; myProgressBar.Minimum = iMinValue; }
Et donc, c'est ma méhode : PrepareListForReprodesk, qui à un moment doit modifier ma Form, donc dans la méthode PrepareListForReprodesk, je dois normalemnt appeler ma méthode Délégué non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 private void Button_Reprodesk_Click(object sender, EventArgs e) { //PrepareListForReprodesk(); Thread myThread = new Thread(new ThreadStart(PrepareListForReprodesk)); myThread.Start(); }
J'ai beau essayer différents appels, ca ne marche pas, j'ai un léger problème de syntaxe.
J'ai essayé dernièrement ceci:
Mais j'ai une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Invoke(new SetProgressBar(SetProgressBarValue(tabLineFromFile.Length * 2, 0, 1, 0)));Nom de méthode attendue.
Je suis un peu paumé la..
Merci
Partager