У меня есть служебный класс с рабочим потоком с простым условием выхода. Я использую этот класс в своем приложении. Рабочий поток создан и запущен в конструкторе класса.
class MyClass
{
Thread _thread;
// unrelevant details are omitted
void WorkerThreadRoutine
{
while(_running)
{
// do some useful background work here
}
}
}
У меня вопрос, КОГДА я должен установить _running = false. В C ++ с детерминированным
жизнь освобождения ресурса легка - я использую деструкторы объекта и мне все равно.
Я бы написал что-то вроде
~MyClass()
{
_running = false;
}
В C # нет деструкторов в смысле C ++. Должен ли я написать некоторую функцию Dispose () здесь
и использовать IDisposable? Конечно, я могу предоставить функцию Stop (). Но когда я должен это назвать? Есть ли способ автоматически вызывать мою функцию Stop?
Какой здесь правильный шаблон? В моем приложении много экземпляров MyClass.
Прямо сейчас мое приложение зависает при выходе.