J'ai une classe utilitaire avec thread de travail avec des conditions de sortie simples. J'utilise cette classe dans mon application. Le thread de travail est créé et démarré dans le constructeur de la classe.Worker thread et Dipose()
class MyClass
{
Thread _thread;
// unrelevant details are omitted
void WorkerThreadRoutine
{
while(_running)
{
// do some useful background work here
}
}
}
Ma question est QUAND dois-je définir _running = false. En C++ avec déterminisme la vie de désallocation des ressources est facile - J'utilise des destructeurs d'objets et ne s'en soucie pas.
Je voudrais écrire quelque chose comme
~MyClass()
{
_running = false;
}
En C# il pas dans le sens Destructeurs C++. Dois-je écrire une fonction Dispose() ici et utiliser IDisposable? Je peux bien sûr fournir une fonction Stop(). Mais quand dois-je l'appeler? Est-il possible d'appeler automatiquement ma fonction Stop?
Quel est le bon motif ici? J'ai beaucoup d'intensions MyClass dans mon application.
Maintenant, mon application se bloque à la sortie.