Получить количество строк
От полученного числа отнять 1
Взять строку под номером №
Получить количество строк
От полученного числа отнять 1
Взять строку под номером №
IZennoList list = project.Lists["list"];
int last = list.Count - 1;
return list[last];
Ну тут либо кубиками, либо:
C#:IZennoList list = project.Lists["list"]; int last = list.Count - 1; return list[last];
IZennoList list = project.Lists["list"];
int last = list.Count - 1;
if(last >= 0)
{
string lastValue = list[last]; // Получаем последний элемент
list.RemoveAt(last); // Удаляем его из списка
return lastValue; // Возвращаем значение
}
else
{
throw new InvalidOperationException("Список пустой");
}
а с удалением?
А что за прикол удалять?
безопасный одновременный доступ из нескольких потоковА что за прикол удалять? Я как правило получаю кол-во строк и потом по очереди каждую беру, так и исходный файл в целостности (вдруг чего) и воспроизвести можно повторно если нужно.
безопасный одновременный доступ из нескольких потоков
подробнееНу я беру строку, делаю лок файл, следующий потом смотрит что есть лок и берет следующую. Вроде норм пока работает. А там конечно кому как нравится. Я пришел к такой схеме.
подробнее
и всё это ты вынужден обезопашивать через код с помощью лок-конструкции lock (object)?Вроде все уже выше описал.
Я делаю не взять строку с удалением, а получаю кол-во строк, потом прохожу от 0 до N строк, после взятия N строки создаю лок файл, типа Run/1.lock, Run/2.lock и тп, следующий потом берет следующую строку, проверяет есть ли файл лока, есть есть, берет следующую и т.д. с последним потоком файлы лока затираются (ну либо после каждого прохода стирается свой).


