как правильно сделать многопоточность что бы программа не зависала?

Всем привет! Как сделать правильно многопоточность, что бы программа не зависала? Я делал список List<Thread> threads = new List<threads>(); туда помещал потоки, а потом по кнопке их всех останавливал проходясь циклом по ним threads[i].Abort(). Функция потоков выглядела так:

void foo(object obj) {
   while(true) {
       FooStruct fs = (FooStruct)obj;
       AddLog(fs.arg1);
       AddLog(fs.arg2);
       AddLog(fs.arg3;
  }
}

Эта функция выводит текст в richtextbox. Но когда юзер запускает очень много таких потоков (штук по 1к), то программа зависает намертво. Как сделать что бы сколько не запускай - программа их отрабатывала? Спасибо всем! Если что, это мне нужно для парсера сайтов, в аргументы передаются url сайтов, но я привёл пример немного легче.


Ответы (1 шт):

Автор решения: Aziz Umarov

Делать остановку потоков в другом потоке. У вас синхронный поток (главный) останавливает в цикле потоки отсюда и зависание.

→ Ссылка