Помогите разобраться. Почему этот код зацикливается?

_andrews_.
Дата: 03.02.2010 10:34:43
я перебираю каждый Inline у richTextBox
и, если этот Inline является ссылкой - вставляю после нее еще одну ссылку.
Код бесполезный. Просто "щупаю" объект Inline
foreach (Block block in richTextBox.Document.Blocks)
{
	foreach (Inline inline in ((Paragraph)block).Inlines)
	{
		TextRange range = new TextRange(inline.ContentStart, inline.ContentEnd);
		string s = range.Text;
		if (inline.GetType() == typeof(Hyperlink))
		{                                 
                                  // зацикливается. Почему?
			((Paragraph)block).Inlines.InsertAfter(inline, CreateLink("Еще ссылка")); 
			break;
		}
		
	}
}

я уже и break поставил. но он не срабатывает. а бесконечно срабаьывает строчка кода до него. (с добавлением ссылки) Почему?
дерево
Дата: 03.02.2010 10:52:32
для меня лично странно, что for each молчит на изменение коллекции. Ну, молчит и молчит.

Зацикливается, видимо, потому, что вы вставили после текущего инлайна гиперссылку. цикл переходит к нему и видит гиперссылку. Которую вы вставили. Он вставляет после неё гиперссылку и переходит к ней. И опять видит гиперссылку. Которую, собственно, он только что вставил.
_andrews_.
Дата: 03.02.2010 10:53:22
дерево,
да. Но как же break?
_andrews_.
Дата: 03.02.2010 10:54:47
действительно переход по циклу не отображается.
Debug стоит на одной строке и постоянно выполняет ее. Никаких переходов...
Никаких проверок вышеуказаных условий...
дерево
Дата: 03.02.2010 10:57:59
зацикливается-то какой цикл из двух? Не факт, что break не сработал. Возможно, ваша вставка сформировала новый блок? И внешний цикл к нему и перешел?