- Регистрация
- 23.03.2021
- Сообщения
- 87
- Благодарностей
- 7
- Баллы
- 8
Привет, народ)
Столкнулся с нетривиальной задачей -
Нужно, при взятии строки из таблицы, чтобы 1й поток взял бы 1ую строку. 2ой поток - 2ую и тд
lock и mutex пробовал - не дают нужного эффекта
В итоге, составил такой код, который приблизил меня к результату. Возможно тут ошибка:
//Здесь строки кода, которые работают с другими столбцами - номер строки лежит в h
}
Замысел такой - 1й поток берет 1ую строку в работу, ставит в ячейку F статус "Работаем", 2й поток "видит" этот статус, пропускает эту строку, берет следующую, у которой статус - "Актуально" и т.д. со всеми потоками.
По факту получается, что все потоки работают только с первой строкой. Как решить эту задачу? Можете помочь?
Столкнулся с нетривиальной задачей -
Нужно, при взятии строки из таблицы, чтобы 1й поток взял бы 1ую строку. 2ой поток - 2ую и тд
lock и mutex пробовал - не дают нужного эффекта
В итоге, составил такой код, который приблизил меня к результату. Возможно тут ошибка:
C#:
//Проверяем статус строки - актуально или в работе
//Тут общий цикл работы с таблицей for(){
for(rowNum=0;rowNum<=GoodsInCab.RowCount;rowNum++){
string Status = GoodsInCab.GetCell("F", h);
project.SendInfoToLog("Идем по строке № - " + rowNum);
if(Status=="Актуально"){
System.Threading.Thread.Sleep(rnd.Next(3000, 4500));
project.SendInfoToLog("Ставим статус - 'Работаем' текущему объявлению", true);
GoodsInCab.SetCell("F", h, "Работаем");
System.Threading.Thread.Sleep(rnd.Next(3000, 4500));
project.SendInfoToLog("Текущий номер строки - " + rowNum, true);
rowNum=h;
break;
}
}
}
Замысел такой - 1й поток берет 1ую строку в работу, ставит в ячейку F статус "Работаем", 2й поток "видит" этот статус, пропускает эту строку, берет следующую, у которой статус - "Актуально" и т.д. со всеми потоками.
По факту получается, что все потоки работают только с первой строкой. Как решить эту задачу? Можете помочь?