sxl_88
2015-03-30 08:11
采纳率: 50%
浏览 2.1k

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • blownewbee 2015-03-30 12:06
    已采纳

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

    点赞 评论
  • lhl_lqc 2015-03-30 08:35

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

    点赞 评论
  • sxl_88 2015-03-30 11:50

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

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

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

    点赞 评论

相关推荐 更多相似问题