Используйте ключевое слово break. Это выйдет из цикла while и продолжит выполнение вне его. Поскольку у вас ничего не будет через некоторое время, он будет переходить к следующему элементу в цикле foreach.
На самом деле, если присмотреться к вашему примеру более внимательно, вы действительно хотите иметь возможность продвигать цикл for, не выходя из этого времени. Вы не можете сделать это с циклом foreach, но вы можете разбить цикл foreach на то, что он на самом деле автоматизирует. В .NET цикл foreach фактически отображается как вызов .GetEnumerator () для объекта IEnumerable (которым является ваш объект this.ObjectNames).
Цикл foreach в основном такой:
IEnumerator enumerator = this.ObjectNames.GetEnumerator();
while (enumerator.MoveNext())
{
string objectName = (string)enumerator.Value;
// your code inside the foreach loop would be here
}
Если у вас есть эта структура, вы можете вызвать enumerator.MoveNext () внутри цикла while, чтобы перейти к следующему элементу. Таким образом, ваш код станет:
IEnumerator enumerator = this.ObjectNames.GetEnumerator();
while (enumerator.MoveNext())
{
while (this.ResumeWhileLoop())
{
if (this.MoveToNextObject())
{
// advance the loop
if (!enumerator.MoveNext())
// if false, there are no more items, so exit
return;
}
// do your stuff
}
}