Redemarrage d'un Thread apres un abort [Résolu]

Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013
- - Dernière réponse : johnnous
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013
- 9 févr. 2011 à 13:49
Bonjour
j'utilise 2 Thread le 1er est une boucle sans fin et je veux à partir de mon 2eme Thread arrêter le 1er s'il est trop long
voici le sources
public static Thread myThread;
public static Thread ThreadMonitoring;
private void button1_Click(object sender, EventArgs e)
{
if (!ThreadMonitoring.IsAlive)
{
ThreadMonitoring.Start();
}
if (!myThread.IsAlive)
{
myThread.Start();
}
}

public static void ThreadMonitoringLoop()
{
int DebTps = System.DateTime.Now.Second;
while (Thread.CurrentThread.IsAlive)
{
Thread.Sleep(500);
if (System.DateTime.Now.Second - DebTps > 2)
{
Console.WriteLine("depassement du tps Arret des threads");
myThread.Abort();
ThreadMonitoring.Abort();
}

}
}

Ca marche bien mon soucis est que si je re click sur mon bouton pour redemarre mon thread j'ai le message d'erreur suivant:
Le thread est en cours d'exécution ou arrêté ; il ne peut pas redémarrer.
ce qui est bizare c'est que
ThreadMonitoring.ThreadState = Stopped au lieu Aborted ???

J'ai fait une erreur lors de l'arret du Thread ?

Merci de vos réponses

Jean louis
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013
3
Merci
J'ai trouve il faut recréer le Thread
private void button1_Click(object sender, EventArgs e)
{
if (!ThreadMonitoring.IsAlive)
{
ThreadMonitoring = null;
ThreadMonitoring = new Thread(new ThreadStart(ThreadMonitoringLoop));
ThreadMonitoring.Start();
}
if (!myThread.IsAlive)
{
myThread = null;
myThread = new Thread(new ThreadStart(ThreadLoop));
myThread.Start();
}
}


Jean louis

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de johnnous
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
24 mai 2013
0
Merci
je début du code
public Form1()
{
InitializeComponent();
myThread = new Thread(new ThreadStart(ThreadLoop));
ThreadMonitoring = new Thread(new ThreadStart(ThreadMonitoringLoop));
}
// Cette méthode est appelé lors du lancement du thread
// C'est ici qu'il faudra faire notre travail.
public static void ThreadLoop()
{
// Tant que le thread n'est pas tué, on travaille
while (Thread.CurrentThread.IsAlive)
{
Thread.Sleep(500);
Console.WriteLine("Je travaille...");
}
}
Jean louis
Commenter la réponse de johnnous