Существует множество способов справиться с этим, но в идеале вы хотите, чтобы ваши потоки нормально выходили самостоятельно, а не просто убивали процесс.
Вы можете сделать что-то очень простое, как это:
public class ThreadSignal
{
public bool Stop { get; set; }
}
Затем в цикле потока выполните:
public void DoWork(object state)
{
ThreadSignal signal = (ThreadSignal)state;
while(!signal.Stop)
{
// Do work here
}
}
Затем, когда вы будете готовы остановиться, установите ThreadSignal.Stop
на true
. Это очень простой пример, но он дает вам отправную точку.