Привет!
Вопрос в следующем.
Приберет ли на тот свет GC экземпляр класса вместе с работой потока из памяти и освободит ее?
Меня смущает что я не прерываю работу потока внутри объекта при удалении и есть мысль что она и останется висеть, так ли это? Обычно GC забирает все, на что уже не ссылаются, но тут не уверен и прошу подсказки.
Удаляю объект из коллекции вот так:
TestList.Remove(<объект экземпляра класса (TestService)>)
Есть пример класса: (код условный и не содержит остановку токена, но в оригинале он есть)
class TestService{
public void TestThreadPool(){
int count++
ThreadPool.QueueUserWorkItem(new WaitCallback(obj => {
while( true) {
count++
// тут проверка токена. Он же СТОП потока.
if (_token.IsCancellationRequested){
break;
}
}
} )
}
}
Я создаю коллекцию таких классов и запускаю потоки.
List<TestService> TestList= new List<TestService>();
TestList.Add(new TestService()..) // добавляем нужное количество объектов
...
TestList[0].TestThreadPool() // запуск потока.