c#-C# winform项目,退出应用程序时,报"集合已修改,可能无法执行枚举操作。"错误信息。

问题描述

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

时间: 2024-07-31 13:15:07

c#-C# winform项目,退出应用程序时,报"集合已修改,可能无法执行枚举操作。"错误信息。的相关文章

退出Android程序时清除所有activity的实现方法_Android

本文实例讲述了退出Android程序时清除所有activity的方法.分享给大家供大家参考,具体如下: 在一个项目中,要退出android程序,试了restartPackage. killBackgroundProcesses .通过异常并在Application的子类中重新注册Thread的 Thread.UncaughtExceptionHandler接口+异常方式,等等,都没有效果. 最后发现其实只要在从一个activity A 跳到另一个activity B 时,调用了A的finish方

退出Android程序时清除所有activity的实现方法

本文实例讲述了退出Android程序时清除所有activity的方法.分享给大家供大家参考,具体如下: 在一个项目中,要退出android程序,试了restartPackage. killBackgroundProcesses .通过异常并在Application的子类中重新注册Thread的 Thread.UncaughtExceptionHandler接口+异常方式,等等,都没有效果. 最后发现其实只要在从一个activity A 跳到另一个activity B 时,调用了A的finish方

c#-调用AddRange()方法时被提示"集合被修改,枚举操作可能无法进行"

问题描述 调用AddRange()方法时被提示"集合被修改,枚举操作可能无法进行" 实在搞不懂来提问,我并没有修改什么东西啊. 解决方案 看你的代码,addrange本身会修改集合.不要在foreach迭代中调用它. 解决方案二: 循环和迭代中不要对集合进行修改

android平台完全退出应用程序

  android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效.如果有A,B,C三个Activity,而想在B或C中Activity退出,调用上面的方法,往往会销毁当前的Activity返回上一个Activity.当然也可以逐个返回上一个Activity,直到跳转到入口的Activity,最后退出应用程序

android 完全退出应用程序实现代码_Android

android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效.如果有A,B,C三个Activity,而想在B或C中Activity退出,调用上面的方法,往往会销毁当前的Activity返回上一个Activity.当然也可以逐个返回上一个Activity,直到跳转到入口的Activity,最后退出应用程序.但

讲解关于编写跨平台Java程序时的注意事项

使用Java语言编写应用程序最大的优点在于"一次编译,处处运行",然而这并不是说所有的Java程序都具有跨平台的特性,事实上,相当一部分的Java程序是不能在别的操作系统上正确运行的,那么如何才能编写一个真正的跨平台的Java程序呢?下面是在编写跨平台的Java程序是需要注意的一些事情:1.编写Java跨平台应用程序时,你可以选择JDK1.0,1.1,1.2或支持它们的GUI开发工具如:Jbuilder,Visual Age for Java 等等,但是必须注意你的Java程序只能使用

android 完全退出应用程序实现代码

android退出应用程序会调用android.os.Process.killProcess(android.os.Process.myPid())或是System.exit(0),这只是针对第一个Activity(也就是入口的Activity)时生效.如果有A,B,C三个Activity,而想在B或C中Activity退出,调用上面的方法,往往会销毁当前的Activity返回上一个Activity.当然也可以逐个返回上一个Activity,直到跳转到入口的Activity,最后退出应用程序.但

winform-C# Winform项目,如何实现关闭退出第三方应用程序同时将在任务栏右下角的图标也自动消失

问题描述 C# Winform项目,如何实现关闭退出第三方应用程序同时将在任务栏右下角的图标也自动消失 在退出"CBOX央视影音"在线视频播放的App客户端时,该视频播放的App客户端已经成功退出(包括在Windows任务管理器中CBox的进程), 但是"CBOX央视影音"图标在任务栏的右下角还显示,需要鼠标手工移动到此处才消失. 如何实现在退出"CBOX央视影音"在线视频播放的App客户端时,自动将在任务栏右下角的图标也自动消失. 请问如何修改

winform-C# Winform项目,如何实现关闭退出外部视频客户端程序

问题描述 C# Winform项目,如何实现关闭退出外部视频客户端程序 在C# Winform项目,有三个Form窗体(form1,form2,form3),在form1窗体有一个button按钮. 目前已经可以在button的点击事件中,通过以下代码实现将"CBOX央视影音"在线视频播放的App客户端打开. 代码如下: Process proc = new Process(); proc.StartInfo.FileName = @"C:Program FilesCNTVC