Bon j'ai lu des trucs sur les ManualResetEvent. Je pense avoir compris, néanmoins sa ne marche pas comme je veux, j'ai du oublier quelque chose.
En appuyant sur Set (qui appelle mre.Set()), le thread se lance bien (le chrono démarre).
Lorsque j'appui sur Reset (qui appelle mre.Reset()), rien ne change, et le chrono continue d'avancer.
Temps temps = new Temps(); // Chronomètre
Thread chronometre; // Thread qui affiche le temps
delegate void dMajTime(String heure); // Delegate du thread
ManualResetEvent mre = new ManualResetEvent(false);
public MainForm()
{
InitializeComponent();
chronometre = new Thread(new ThreadStart(time));
chronometre.Start();
}
// Thread qui met le temps à jour
void time ()
{
mre.WaitOne();
while(Thread.CurrentThread.IsAlive)
this.Invoke(new dMajTime(majTime), temps.getStringTime());
}
// Mise à jour du temps
void majTime (String heure)
{
tTemps.Text = "Temps : " + heure;
}
void setClick(object sender, EventArgs e)
{
mre.Set();
}
void resetClick(object sender, EventArgs e)
{
mre.Reset();
}
L'ouverture de l'esprit n'est pas une fracture du crâne