IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#] AutoResetEvent...


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Par défaut [C#] AutoResetEvent...
    Bonjour à tous,

    J'ai un thread qui réalise une boucle while (lecture de fichier...). Comment faire en sorte qu'il boucle tant qu'un AutoResetEvent n'a pas été signalé. En gros j'aimerais pouvoir interrompre ce thread au signalement d'un évènement...

  2. #2
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    je suis gentil aujourd'hui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    using System.Threading;
     
    public class Thread : System.Windows.Forms.Form
    {
     
    	// ........
     
    	// Evènement de signal de fin de thread
    	private AutoResetEvnet _endThreadCalculsEvent = new AutoResetEvent(false);
     
    	// Pour arrêter le thread
    	private void Button2_Click(Object sender, System.EventArgs e)
    	{
    		// L'evenement passe à l'état signalé
    		_endThreadCalculsEvent.Set();
    		// On attend la fin du thread.
    	_threadCalculs1.Join(); 
    	}
     
    	// Fonction du thread
    	private void ThrFunc1()
    	{
    		try
    		{
    			Calculs(1000);
    		}
    		Catch (Exception ex)
    		{
    			Debug.WriteLine(ex.ToString());
    		}
     
    	}
     
    	private void Calculs(int tempor)
    	{
    		// Si l'évenement est à l'état signalé, WaitOne renvoie true et la boucle se termine.
    		while (! _endThreadCalculsEvent.WaitOne(tempo, false) )
    		{
    			// C'est ici ou notre thread fait son travail
    			// .....
    		}
    	}
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Par défaut
    Un grand merci pour ta gentillesse...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Par défaut
    J'ai encore une petite question... A quoi sert le paramètre false de la méthode WaitOne de l'évnènement ??? Que veulent-ils dire par "quitter ou non le domaine de synchronisation" ??? Là, j'abuse vraiment de ta gentillesse...

  5. #5
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Par défaut
    Je m'étais déjà cassé la tête dessus sans vraiment trouver
    suis cette discussion. c'est un début de piste
    http://discuss.develop.com/archives/...&F=&S=&P=23212

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MultiThread] Compréhension AutoresetEvent
    Par Tetram165 dans le forum C#
    Réponses: 1
    Dernier message: 10/10/2007, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo