Вот есть у меня лист из 300 прокси. Мне нужно прочекать их в 20 потоков. Это мне как нужно делать? так? Code: for (int i = 0; i < 20; i++) { Thread t = new Thread(...); } Тут только нельзя поставить CallBack чтобы к следующей перейти. Объясните пожалуйста, как нормально в 50 потоков прочекать и желательно чтобы можно было результат в ProgressBar кидать.
"объясните" - это когда были попытки решить задачу самостоятельно и возникли какие-то проблемы/ошибки. А готовый код можно получить в разделе "О работе".
Были попытки решить задачи самостоятельно. Привожу свой сорец: Code: private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { SettingsInfo si = e.Argument as SettingsInfo; threads = new List<Thread>(); while (true) { System.Threading.Thread.Sleep(300); bool isContinute = false; foreach (Thread item in threads) { if (item.ThreadState == ThreadState.Running) { isContinute = true; break; } } if (isContinute) continue; for (int i = 0; i < si.Threads; i++) { Thread t = new Thread( (ThreadStart)delegate() { Data.CheckProxy(ProxyList[CurrentProxyNum], si.Url, si.TimeOut); //System.Threading.Thread.Sleep(50); if (onEndProcess != null) onEndProcess(); } ); t.Start(); threads.Add(t); CurrentProxyNum++; } } Тут получилось не очень удачно. И этот сорец бесполезен и является чистым подобием говнокода, поэтом я и обратился к вам. M_script если тебе нужны деньги за решение могу заплатить. Только за идеально правильный вариант.
многопоточность реализовать можно реализовать разными способами. Банальный способ через for или создавать обьект класса который наследует namespace Thread.