"Коллекция была изменена; операция перечисления может не выполняться." при утилизации формы - PullRequest
0 голосов
/ 19 мая 2010

"Коллекция была изменена; операция перечисления может не выполняться." Похоже, что это общая ошибка с foreach циклами, но я не могу понять, мои. У меня есть два класса форм. Один запускается при запуске, и кнопка создает новые экземпляры второй формы и отображает их. Когда я закрываю вторичные формы, я получаю InvalidOperationException.

FirstForm.cs

public partial class FirstForm : Form
{
    SecondForm frmSecond;
    ...
    private void button1_Click(object sender, EventArgs e)
    {
        frmSecond= new SecondForm ();
        frmSecond.Show();
    }
}

SecondForm.designer.cs

partial class SecondForm
{
    ...
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing); // InvalidOperationException thrown here.
    }
}

Ответы [ 3 ]

0 голосов
/ 19 мая 2010

Если вы нажмете несколько раз, ссылка в FirstForm может больше не указывать на то, что вы закрываете.

попробовать

 private void button1_Click(object sender, EventArgs e)
 {
      var second = new SecondForm();
      second.Show();
 }
0 голосов
/ 19 мая 2010

Проблема была в объекте PowerPacks.RectangleShape, который я поместил во вторую форму и о котором забыл (потому что он не рендерится). Я удалил объект, и форма расположилась просто отлично.

Проверяя это далее, я обнаружил, что любой элемент управления, который требует PowerPacks.ShapeContainer (LineShape, OvalShape и RectangleShape,), вызывает эту проблему, но другие PowerPacks объекты не.

Я не уверен, почему это происходит, поэтому, если кто-нибудь найдет обходной путь, я был бы признателен за это. Но пока я буду избегать PowerPacks фигур.

0 голосов
/ 19 мая 2010

Может ли быть так, что он вызывает Dispose рекурсивно? Можете ли вы взглянуть на стек вызовов при возникновении исключения?

В этом случае сломанной коллекцией будет набор элементов управления в форме

...