首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# WinForm 退出時出現「集合已修改」異常的排查與解決

     編輯:程式設計綜合問答

現象描述

Form1 中點擊 Button1 彈出 Form2(Show() 非模態),隨後點擊 Button2 調用 Application.Exit() 退出,拋出異常:「集合已修改,可能無法執行枚舉操作」。

原因分析

主線程關閉時,若有其他線程仍嘗試訪問 UI 集合(如控件集合、綁定集合),即會觸發此異常。常見於:背景線程更新 UI、定時器未停止、非模態窗體未正確關閉。

解決建議

  1. 退出前確保所有背景線程已安全結束(Thread.Join() 或取消標誌)。
  2. 關閉所有非模態窗體:遍歷 Application.OpenForms 調用 Close()。
  3. 停止所有 Timer、取消異步操作。
  4. 若必須強制退出,可作為最後手段使用 Process.GetCurrentProcess().Kill(),但不推薦常規使用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved