как правильно сделать многопоточность что бы программа не зависала?
Всем привет!
Как сделать правильно многопоточность, что бы программа не зависала? Я делал список 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 шт):
Делать остановку потоков в другом потоке. У вас синхронный поток (главный) останавливает в цикле потоки отсюда и зависание.