Arret d'un thread

icedreamer Messages postés 26 Date d'inscription mercredi 3 mars 2004 Statut Membre Dernière intervention 21 avril 2005 - 9 janv. 2005 à 16:37
icedreamer Messages postés 26 Date d'inscription mercredi 3 mars 2004 Statut Membre Dernière intervention 21 avril 2005 - 13 janv. 2005 à 21:51
Bonjour,

J'essaye d'arreter proprement un thread de cette manière :
t.Abort();
ce qui effectue bien l'arret du thread ...mais il m'affiche un message :
"Thread was being aborted"

Comment puis-je "bloquer" ce message et afficher un message perso ?
(Note : j'ai essayé avec try/catch mais sans résultats)

Merci de votre aide !

5 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
9 janv. 2005 à 18:05
Tu peux toujours aussi attendre la fin de l'execution du Thread, avec la méthode tonThread.Join();



Mais tu devrais poster un bout de code pour qu'on puisse t'aider plus efficacement.



Mx
1
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
9 janv. 2005 à 17:48
Tu n'arrives pas a catcher l'exception ThreadAbortException ?
0
icedreamer Messages postés 26 Date d'inscription mercredi 3 mars 2004 Statut Membre Dernière intervention 21 avril 2005
9 janv. 2005 à 19:24
Je viens d'essayer et je peux catcher l'exception au niveau de la fonction appeler par le thread mais j'ai toujours le message en plus de mon propre message !
//**********************

private void LaunchDownload()


{


t
= new Thread(new ThreadStart(DownloadFiles
));


t
.Start();


}

public void DownloadFiles()
{
try{
//Téléchargement d'un ou plusieurs fichiers
}
catch(ThreadAbortException tex)
{
ut.Mbox("debug",tex.Message,1);
}
}

void BtnCancelClick(object sender
, System
.EventArgs e
)


{


t.Abort();


}

Voilà
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
9 janv. 2005 à 19:44
J'ai pris une form avec 2 boutons (button1 et button2). Compilé en exe pour pouvoir ecrire dans la console.

Avec le code ci dessous, (qui n'a rien de special), ca marche.

Si je commente le message dans le catch, je n'ai pas de message (mais ca ne plante pas).

C'est le résultat voulu il me semble. Donc apres je comprends pas pourquoi ca marche pas chez toi.

Si tu veux un message perso a la place du "Thread wad being aborted", tu changes juste

Console.WriteLine(tex.Message);

par

Console.WriteLine("Mon message perso");




private void LaunchDownload()

{

     t = new Thread(new ThreadStart(DownloadFiles));

     t.Start();

}



 public void DownloadFiles()

{

    while(true)

    {

         try

        {

            Console.WriteLine(""+ i++);

            Thread.Sleep(100);

        }

        catch(ThreadAbortException tex)

        {

             Console.WriteLine(tex.Message);

        }

    }

}



private void button1_Click(object sender, System.EventArgs e)

{

         t.Abort();

 }



private void button2_Click(object sender, System.EventArgs e)

{

     LaunchDownload();

}







Mx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
icedreamer Messages postés 26 Date d'inscription mercredi 3 mars 2004 Statut Membre Dernière intervention 21 avril 2005
13 janv. 2005 à 21:51
Enfin !

Je viens de trouver ! En fait j'avais deux try/catch imbriqués et j'avais catché le tex dans le try le plus haut donc ...
Solution : Supprimé un catch !

Merci pour ton aide !

Code :
try{
aa
bb
try{
cc
dd
}
catch(Exception e) { mon message}

ee
}
catch(ThreadAbortException tex) { mon message }

PAS BON !!!

try{
aa
bb
}
catch(ThreadAbortException tex) { mon message }

BON !
0
Rejoignez-nous