Правильная остановка потоков - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д