1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| namespace monAppli
{
public partial class Chargement : Form
private void Chargement_Load(object sender, EventArgs e)
{
/* J'effectue des ajustements de fenêtres */
/* J'appelle ma méthode qui va créer et lancer le thread de chargement */
lancement_thread_chargement();
}
private void lancement_thread_chargement()
{
/* J'instancie le thread et je lui assigne sa procédure de démarrage, ici Traitement_thread_chargement */
thread_chargement = new Thread(Traitement_thread_chargement);
/* On lance le thread, et si il y a une exception, on le coupe */
try
{
thread_chargement.Start();
}
catch
{
thread_chargement.Abort();
}
}
private void Traitement_thread_chargement()
{
/* Déclarations */
int i_nb_etape = 11;
int i_pct_etape = 100 / i_nb_etape;
i_pourcent = 0;
f_anomalie = false;
// .... Traitement simple
if (f_anomalie != true)
{
i_pourcent = i_pourcent + i_pct_etape;
Maj_barre_progression();
Thread.Sleep(2000);
}
// ... J'effectue d'autres traitements simple et je remets les mêmes conditions avec le if (Anomalie != true) à chaque fois pour modifier ma barre de progression.
}
///<summary> Procédure de délégation du thread de chargement au thread principal qui va lancer Maj_barre_progression pour la mise à jour </summary>
private delegate void Maj_barre_progression_delegate();
private void Maj_barre_progression()
{
/* On vérifie si cette procédure est appelée par le thread de chargement qui lui nécessite de déléguer la mise à jour de la fenêtre au thread Principal car il n'a pas le droit */
if (InvokeRequired == true)
{
/* Le thread de chargement délègue au thread principal la mise à jour de la fenêtre par Maj_barre_progression_delegate */
Invoke(new Maj_barre_progression_delegate(delegate { Maj_barre_progression(); } )); ERREUR EST ICI
return;
}
/* Barre de Progression */
barre_chargement.Value = i;
/* On raffraichit la fenêtre */
this.Refresh();
} |