Правильная остановка потоков - C#
Формулировка задачи:
нужно правильно остановить потоки(на кнопку стоп(!)), чтобы они завершились и можно было закрыть программу без прерывания.
так создаю потоки:
сама функция:
пытался через
private void start_Click(object sender, EventArgs e)
{
for (int i = 0; i <= threads.Value; i++)
{
Thread th = new Thread(new ThreadStart(this.Regging));
th.IsBackground = true;
th.Start();
}
}private void Regging()
{
try
{
using (var request = new HttpRequest())
{
бла бла бла
}
}
catch
{
}
finally
{
Regging();
}
}th.Join();
, но так не выходит( нужно как-то вытащить номера потоков и их завершать, а незнаю как... msdn не помог, по моему способу создания в гугле информации нет.Решение задачи: «Правильная остановка потоков»
textual
Листинг программы
class CancellableThread
{
private readonly Thread thread;
private bool run;
public CancellableThread(Action threadStart)
{
thread = new Thread(()=>
{
while (run)
{
threadStart();
}
});
}
public CancellableThread(Action<object> parameterizedThreadStart)
{
thread = new Thread(obj =>
{
while (run)
{
parameterizedThreadStart(obj);
}
});
}
public void Start()
{
run = true;
thread.Start();
}
public void Start(object obj)
{
thread.Start(obj);
}
public void Stop()
{
run = false;
}
}