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

johnnous 100 Messages postés jeudi 3 mars 2005Date d'inscription 24 mai 2013 Dernière intervention - 9 févr. 2011 à 12:40 - Dernière réponse : johnnous 100 Messages postés jeudi 3 mars 2005Date d'inscription 24 mai 2013 Dernière intervention
- 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
johnnous 100 Messages postés jeudi 3 mars 2005Date d'inscription 24 mai 2013 Dernière intervention - 9 févr. 2011 à 13:49
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

Merci johnnous 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de johnnous
johnnous 100 Messages postés jeudi 3 mars 2005Date d'inscription 24 mai 2013 Dernière intervention - 9 févr. 2011 à 12:41
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.