[C# 2.0] Comment supprimer un objet dans une liste ?
Bonjour à tous,
voilà, j'ai une classe qui doit gérer une liste de threads et un filewatcher, et je suis un peu perdu.
Je dois surveiller un dossier (avec un FileSystemWatcher ), et à chaque modif sur un fichier, je dois lancer un nouveau thread. Mais je dois garder un 'lien' sur ces threads pour pouvoir les arrêter quand je veux. C'est pour ça que je les stocke dans une List.
Voici à quoi ressemble ma classe pour l'instant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| using System.Threading;
namespace Toto
{
public class MaClasse
{
MaClasse(String watchDir)
{
fsWatcher = new FileSystemWatcher(watchDir); //le watcher surveille le dossier (watchDir)
fsWatcher.Renamed += new RenamedEventHandler (fsWatcher_Renamed); //lorsqu'un fichier contenu dans le dossier surveillé est renommé, la fonction fsWatcher_Renamed sera appelée
}
void fsWatcher_Renamed(object sender, RenamedEventArgs e)
{
Thread newThread = new Thread(new ThreadStart(RenamedThread)); //je créé un nouveau thread
threadList.Add(newThread); //j'ajoute le thread à ma liste
newThread.Start(); //je lance le thread
}
void RenamedThread()
{
outclass.unefonction(); //entouré d'un try/catch etc.
///////////////////////////////////////////////////////////////
/// COMMENT SUPPRIMER LE THREAD DE LA LISTE?
}
private List<Thread> threadList; //liste des threads
private FileSystemWatcher fsWatcher; //'surveilleur' de dossier
private OutClass outclass; //une class 'exterieure' récupérée par une dll (avec Assembly.LoadFrom() )
}
} |
Voilà, ma question est dans la méthode RenamedThread: Comment supprimer le thread de la liste. En effet, une fois que outclass.unefonction(); est terminé, le thread sera automatiquement tué (si j'ai bien compris, puisque on sort de la fonction qui correspond au thread), il faut donc supprimer le thread de ma liste. Ca parait bête comme chou, mais je ne vois pas comment faire. En c++, c'était simple, on avait un ID sur chaque Thread. Mais là...
J'espère que je suis clair :P