Arreter l'éxécution d'un module en clickant sur un bouton

olivierbalagizi Messages postés 40 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 10 février 2011 - 14 févr. 2007 à 09:33
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 14 févr. 2007 à 09:44
Bonjour chers programmeurs
J'ai un petit proglème :
Sur un formulaire qui calcule la paie de 20 000 employés d'une société, un bouton "Démarrer procédure" permet de lancer le calcul qui doit prendre un certain temps avant de se terminer
DemarrerProcedure_Click(object sender, System.
EventArgs e)

{
       foreach(Employe emp in ArrayListEmployes)
      {
               calculerPaie(employe);
      }
}
Si alors l'utilisateur décide d'arreter le caclul de la paie en clickant sur un bouton cmdAnnuler, qu'est-ce qu'il faut faire pour arreter la boucle? (le bouton annuler et Démarrer procédure sont sur le même formulaire)
Chez mois, on me dit que l'application ne reponds pas tant que la boucle n'est pas terminée.
Si quelqu'un voit ce que je veux dire et peut m'aider, alors merci d'avance

1 réponse

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
14 févr. 2007 à 09:44
Salut,

Dans ton cas, la boucle s'effectue dans le thread courant (celui de ta Form, en l'occurence). Il faut que tu démarres le process dans un autre Thread. Ton traitement sera alors effectué en parallele (ta Form continuera de "repondre"), et si tu veux annuler le traitement, tu n'auras qu'a appeler la méthode Abort du Thread que tu as lancé.

2 ressources utiles :
http://www.csharpfr.com/codes/THREAD-PROGRESSBAR-EXEMPLE-SIMPLE_40294.aspx

http://www.csharpfr.com/tutoriaux/CSHARP-OPERATIONS-CROSS-THREADS-UTILISATION-DELEGATIONS-SYNCHRONES-ASYNCHRONES_174.aspx

N'hésite pas a venir reposer des questions complémentaires si tu ne comprends pas trop le principe.

Mx
MVP C# 
0
Rejoignez-nous