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();

c#

3个回答

你有别的线程么?主线程关闭,但是别的线程试图调用,会出这个错。

你能贴出完整代码吗?我试了你的代码是好的,看出错信息是因为集合被修改造成的,你可以看看哪有修改集合的操作。

还有在form1的FormClosing事件中写了如下代码,这样写可以吗?

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (frmmess != null)
{
frmmess.Close();
}

System.Threading.Thread.Sleep(2000);
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问