Fin d'un thread en .NET

Frederyck Messages postés 62 Date d'inscription vendredi 6 décembre 2002 Statut Membre Dernière intervention 16 janvier 2009 - 31 janv. 2005 à 14:47
cs_zanzan Messages postés 32 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 25 juillet 2012 - 29 juin 2010 à 09:23
Salut à toutes et à tous,

alors voici mon soucis, dans une application que je réalise en C#, j'utilise dans un de mes objets (que j'appelerai ici objB) un objet Thread, celui-ci est associé à une méthode qui se charge d'exécuter une requête HTTP et d'enregistrer le contenu. La durée d'enregistrement est fonction du contenu. Je dispose d'une autre classe (objA) qui elle possède un Timer qui tout les X millisecondes va créer un certains nombre d'objB et les initialiser (en donnant entre autre l'adresse de l'url à exécuter). Jusqu'ici tut va bien dira t'on .
Mon soucis est qu'apres la 1ère exécution, dans la méthode de mon timer je réintialise mon objetA, lors du retour à la phase d'initialisation des objets B, je rencontre une exception au moment du objBThread.start() qui est censé lancer la méthode d'enregistrement. L'erreur est " Le thread est en cours d'exécution ou arrêté ; il ne peut pas redémarrer."

Je n'arrive pas à comprendre pourquoi car en principe il s'agit d'un nouvel objet...Alors où est le lien ? Les précédents threads sont ils toujours en ours d'exécution ? Faut il forcer la fin d'un thread une fois que le traitement dans la méthode est terminé ? Comment faire cela ?

Merci pour votre aide

Frederyck
A voir également:

3 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
31 janv. 2005 à 20:20
Comme ca, je sais pas trop d'ou vient le prbleme. Mais essaie
d'attendre la fin d'execution des threads (apres ton thread.Start(); tu
forces l'attenre en ajoutant thread.Join());



Au pire, Abort tes Threads quand ton timer se déclenche...

Mais sinon, je pense qu'on arriverais mieux a visualiser la chose avec un peu de code.




Mx
0
cs_zanzan Messages postés 32 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 25 juillet 2012
29 juin 2010 à 09:18
Salut
j'ai le même problème que toi - as tu une solution ?


Zan
0
cs_zanzan Messages postés 32 Date d'inscription lundi 3 février 2003 Statut Membre Dernière intervention 25 juillet 2012
29 juin 2010 à 09:23
J'ai trouvé pour moi une solution.

Avant de faire un start de ton thread, tu test son état.

if (ThreadService.ThreadState == ThreadState.Unstarted) ThreadService.Start();

else if (ThreadService.ThreadState == ThreadState.Stopped)
{
ThreadService.Abort();
ThreadService = null;
ThreadService = new Thread(new ThreadStart(FctThreadScruteService));
ThreadService.Start();
}


Donc si l'état du service est ThreadState.Stopped, tu Abord ton service pour ensuite le redéfinir et le redemarrer.

Quand aux Pourquoi ?
je sais pas!


Zan
0
Rejoignez-nous