- Регистрация
- 03.05.2016
- Сообщения
- 774
- Благодарностей
- 517
- Баллы
- 93
Столкнулся с проблемой, собираю ID через цикл while в многопотоке System.Threading.Tasks.Parallel.For. Есть условие если Гет ответ 200, сохраняем ID и увеличиваем ID++, если ответ не 200, просто ID++. Но из-за того что работает многопоток, ID сохраняется не верный. Подскажите есть ли какое решение, чтобы работать в многопотоке и сохранять правильные ID?
C#:
System.Threading.Tasks.Parallel.For(0, intAppIdThread, p => {
while(true){
//GET запрос
string strUrlAppId = "https://site.com/client_id=" + intAppIdStart;
string strGetAppId = ZennoPoster.HTTP.Request
(
ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.GET, strUrlAppId,
"", "", strIP, "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderOnly, 15000, "", project.Profile.UserAgent, true, 5,
new String[]{
"Referer: ",
}, "", false, false, project.Profile.CookieContainer
);
if (strGetAppId.Contains("401")){
project.SendInfoToLog("Плохой ID", boolLog);
intAppIdStart ++;
}
else if (strGetAppId.Contains("200")){
intCountStop ++;
project.SendInfoToLog(String.Format("Рабочий ID: " + intAppIdStart.ToString()), true);
project.SendInfoToLog(String.Format("Собрано ID:{0} из {1}",intCountStop.ToString(), intAppIdCount.ToString()), true);
File.AppendAllText(strAppIdSave,"\r\n" + intAppIdStart.ToString());
// Удалить пустые строки в файле
var lines = System.IO.File.ReadAllLines(strAppIdSave).Where(arg => !string.IsNullOrWhiteSpace(arg));
System.IO.File.WriteAllLines(strAppIdSave, lines);
intAppIdStart ++;
}
else{
project.SendInfoToLog("Неизвестный ответ", boolLog);
intAppIdStart ++;
}
if (intCountStop >= intAppIdCount) break;
if (intAppIdStart > 7000000) break;
}
});
Последнее редактирование: