2015-05-08 1 views
0

У меня есть много форм (скрытых), и мне нужно закрыть их все с помощью кнопки, но по какой-то причине она начала бросать ошибки «Коллекция была изменена; операция перечисления не может выполнить»Приложение :: Ошибка выхода(), была изменена, операция перечисления не может быть выполнена)

"System.InvalidOperationException: Collection was modified; enumeration operation may not execute. 
at System.Collections.ArrayList.ArrayListEnumeratorSimple.MoveNext() 
    at System.Windows.Forms.Application.ExitInternal() 
    at System.Windows.Forms.Application.Exit(CancelEventArgs e) 
    at System.Windows.Forms.Application.Exit() 
    ..." 

Код

this->button1->Click += gcnew System::EventHandler(this, &Outro::button1_Click); 
... 
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { 
       Application::Exit(); 
      } 

ответ

0

Это ошибка, которая говорит вам, что вы обращаетесь коллекцию из 2-х или более потоков без защиты замка.

Посмотрите на CallStack и посмотрите, к какой коллекции обращаются.
Эта ошибка указывает, что ArrayList был изменен в другом, будучи повторенным в этом потоке.

+0

Может ли это быть методом OnFormClosing? Я удалил его, потому что я вспомнил, что он отлично работал, прежде чем я внедрил его в другую форму. – user2921071

+0

yes, Exit() закрывает все формы –

+0

Непонятно, что вы думаете о ... –