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

Messages postés
100
Date d'inscription
jeudi 3 mars 2005
Dernière intervention
24 mai 2013
- - Dernière réponse : johnnous
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
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 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
100
Date d'inscription
jeudi 3 mars 2005
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 98 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
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.