質問: true; break; } await Task.Delay(50); } // フォームを閉じる SubForm_Close(); // UIのチェック await button_dangerButtonRecover_EnableCheck(); } // 特定のフォーム以外を閉じる private void SubForm_Close() { foreach (Form frm in Application.OpenForms) { if (frm.Name != "Form_MainConsol") { frm.Close(); } } } } ``` ### 補足情報(FW/ツールのバージョンなど) OS:Windows10 .NET_Framework: 4.5.2 よろしくお願いいたします。
回答: ``` foreach (Form frm in Application.OpenForms) { if (frm.Name != "Form_MainConsol") { frm.Close(); } } ``` このループでフォームを閉じていますが、閉じた際にApplication.OpenFormsの内容が更新されます。 ループ内でそのループの元となるコレクションを変更することは禁止されていますので、InvalidOperationExceptionが発生します。 このループで閉じるべきフォームを列挙するだけにし、別ループで列挙したフォームを閉じる等変更してください。