问题描述
- C# winform项目,退出应用程序时,报"集合已修改,可能无法执行枚举操作。"错误信息。
-
在C# winform项目中,有两个form窗体(form1、form2),在form1中有个两个button按钮。
在form1窗体中,点击button1弹出一个form2窗体,点击button2退出整个应用程序。目前遇到的问题是,在form1窗体中点击button1弹出一个form2窗体后再点击button2退出整个应用程序时,报"集合已修改,可能无法执行枚举操作。"错误信息。
请问如何修改退出整个应用程序代码,谢谢!
附点击button1弹出一个form2窗体代码:
form2 frmmess= new form2();
Point pi = new Point();
Point p1 = label1.PointToScreen(label1.Location);
Point p2 = label1.Location;
pi.X = System.Convert.ToInt32(p1.X - p2.X) + 20;
pi.Y = System.Convert.ToInt32(p1.Y - p2.Y) + 20;
frmmess.Location = pi;
if (frmmess == null || frmmess.IsDisposed)
{
frmmess = new FrmMessage();
}
frmmess.Show();附点击button2退出整个应用程序代码:
System.Windows.Forms.Application.Exit();
解决方案
你有别的线程么?主线程关闭,但是别的线程试图调用,会出这个错。
解决方案二:
你能贴出完整代码吗?我试了你的代码是好的,看出错信息是因为集合被修改造成的,你可以看看哪有修改集合的操作。
解决方案三:
还有在form1的FormClosing事件中写了如下代码,这样写可以吗?
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (frmmess != null)
{
frmmess.Close();
}
System.Threading.Thread.Sleep(2000);
}