У меня есть таймер, вызывающий функцию каждые 15 минут, эта функция подсчитывает количество строк в моем DGV и запускает поток для каждой строки (еще одной функции), указанный поток анализирует веб-страницу, которая может занимать от 1 секунды до 10 секунд до конца.Реализация очереди потоков/ожидания, как?
Несмотря на то, что он работает нормально, так как он имеет 1-6 строк, больше будет вызывать запросы на тайм-аут.
Я хочу, чтобы ждать, пока вновь созданный поток, чтобы закончить обработку перед возвращением в цикле, чтобы создать еще один поток без блокировки главного интерфейса
for (int x = 0; x <= dataGridFollow.Rows.Count - 1; x++)
{
string getID = dataGridFollow.Rows[x].Cells["ID"].Value.ToString();
int ID = int.Parse(getID);
Thread t = new Thread(new ParameterizedThreadStart(UpdateLo));
t.Start(ID);
// <- Wait for thread to finish here before getting back in the for loop
}
Я гугле много в течение последних 24 часов, много читайте об этой конкретной проблеме и ее реализациях (Thread.Join, ThreadPools, Queuing и даже SmartThreadPool).
Вполне вероятно, что я прочитал правильный ответ где-то, но я не достаточно непринужденностью с C# дешифратора те, резьбонарезной инструмент
Спасибо за ваше время
Если это так, почему вы используете новый поток и не вызываете метод? –
Является ли ваш цикл for, как указано выше, работает в потоке пользовательского интерфейса? – CodingGorilla
Если вы начинаете поток, а затем немедленно блокируете его, чтобы закончить, то вы ничего не выиграете, запустив нить. Вы можете просто вызвать 'UpdateLo()' непосредственно и избежать проблем. – Constantin