tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: Application.Exit()処理にて例外エラーが発生
投稿日: 2017/11/08(Wed) 17:41
投稿者魔界の仮面弁士
> Application.Exit()処理にて、例外エラーが発生するようになった。
> 例外エラーのメッセージは、”コレクションが変更されました。列挙操作は実行されない可能性があります。”です。

その例外がどのコレクションを指しているか、調査はできていますか?

この例外は多くの場合、For Each の処理中に、そのコレクションの要素が
増減したことを示します。(DataTable.Rows や、Application.OpenForms など)
https://social.msdn.microsoft.com/Forums/ja-JP/444fc622-a5be-4064-874c-ebfd489fa47a?forum=vbgeneralja
https://qiita.com/kojisaiki/items/d51ec24cc30fc09e7cab

For Each 中にコレクションを増減させてしまうような処理が無いか、
また、列挙中の変数が、他のメソッドに ByRef 渡しされていないかなどを
確認してみてください。配列についても同様です。


> このプログラムは1年以上使用していて
その一年の間に、ソースコードまたは実行環境あるいは取り扱うデータなどに
何らかの変化があったのだと想像しますが、それが何であるのかは
第三者には調査できないと思います…。


それと、起動中のフォームがある場合は、Closingイベントや Closed イベントを
利用していないかどうかを確認してみてください。これらは旧式のイベントであるため、
Application.Exit 時に処理されません。(FormClosing / FormClosed は呼ばれます)


また、ワーカースレッド(BackgrundWorker など)を利用しており、かつ、
そのスレッドの稼働中に Application.Exit を呼び出す可能性がある場合は、
各スレッドの終了順序に依存するような設計になっていないかも確認してみてください。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。