У меня есть следующий цикл (ы). Этот цикл проходит через коллекцию книг и выполняет некоторые логические проверки относительно дат регистрации и регистрации. Затем он возвращает новый объект. Он также переносит названия книгОтслеживание счетчиков в вложенных циклах
Работает ОК до тех пор, пока не дойдет до конца коллекции. Тогда мои счетчики, похоже, выходят из синхронизации и превращаются в бесконечный цикл. Я пробовал разные разрешения, но я просто не могу заставить его работать правильно.
Может ли кто-нибудь увидеть это, если это имеет смысл, или если я что-то делаю неправильно?
Спасибо!
private static readonly TimeSpan gracePeriodTimeSpan = TimeSpan.Parse("23:00");
//current posistion in books collection
currentPos = pos % books.Count;
//posistion to stop at
var stopPos = books.Count;
do
{
//start is current posistion
var startPos = pos;
//assign the next posistion
var nextPos = (pos + 1) % books.Count;
bookTitle = bookTitle + ";" + books[pos].Title;
//loop until we hit the stop posistion - check book CheckInDate/CheckOutDate proximity
while ((nextPos != stopPos || nextPos !=0) && books[pos].CheckInDate + gracePeriodTimeSpan >= books[nextPos].CheckOutDate)
{
pos = nextPos;
nextPos = (pos + 1) % books.Count;
}
bookTitle = bookTitle + ";" + books[pos].Title;
//return new book checkout object
yield return
CreateNewBookCheckout(bookTitle, books[pos], books[startPos].CheckOutDate,
books[pos].CheckInDate);
bookTitle = "";
pos = nextPos;
//keep going til we hit the stop posistion
} while (pos != stopPos);
Спасибо. Это фиксирует счетчики до конца. Это заставляет цикл пропускать самую последнюю книгу в коллекции. – SkyeBoniwell