C#编写的WinForm程序,运行一段时间后越来越卡,怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#编写的WinForm程序,运行一段时间后越来越卡,怎么办?相关的知识,希望对你有一定的参考价值。
是程序结构的问题么?开始很流畅的说。。。
是不是有什么清空什么什么东西的语句啊?怎么写?
怎么开线程。。。怎么关掉。。。
我现在是用了timer,也用了dispose(),不过程序光开着不做任何事,都会变慢。。。怎么回事呢
最简答的一个方法 GC.Collect(); 垃圾回收
最好检查一下你的所有变量的作用域
并且检查一下不要再循环中初始化对象那样很慢
你不贴代码谁也不知道怎么回事
对象被dispose()不见得资源就全被释放了,.net依据一定机制去释放资源,对象被dispose()了也不会马上就释放资源 参考技术A 把要打包的内容添加到解决方案,运行后确定没有错误,则可以进行打包操作如下:选择你的解决方案,右击选属性在弹出的页面左侧一列有一个按钮“发布”设置应用程序文件,需要的dll要选择‘包括''系统必备',如果安装目标上不能确定是否安装了.net2.0要把.netframwork2.0包括进来确定选择好发布位置(第一个选择路径那儿就是)点击立即发布即可如果生成dll则在‘应用程序’->输出类型,选择‘类库’webservice:建立项目的时候选择c#->asp.netweb服务应用程序 参考技术B 新建一个没返回值,没参数的函数,用于存放你的线程方法,
然后在主函数里初始化一个Thread类,把刚才那个方法放进去初始方法中,
然后调用Start方法将线程启动,关闭线程的话,一般是不用的,因为系统会自动回收了。 参考技术C 你有没有开线程,而且没关掉;
关于释放资源我也不懂,推荐个博客
http://lj102800.blog.163.com/blog/static/13431543720100122245059/ 参考技术D 其实timer就是实现了多线程的,所以用的时候最好用完释放资源,不然用久了
系统都可能死机的
C# winform中timer函数如何停止,点运行后可再次启动周期事件
在MenuStrip1控件中,在Form1窗体没有添加timer1控件
运行RunMenu_Click
private void RunMenu_Click(object sender, EventArgs e)
//到达时间的时候执行事件,周期为10秒;
System.Timers.Timer timer1 = new System.Timers.Timer(10 * 1000);
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick);
timer1.AutoReset = true; //设置一直执行(true)
timer1.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件
RunMenu.Enabled = false;
StopMenu.Enabled = true;
private void timer1_Tick(object sender, EventArgs e)
//是连接sql,插入数据操作
停止StopMenu_Click,停止timer应该怎么实现呢
private void StopMenu_Click(object sender, EventArgs e)
??timer1 .Enabled = false; ??吗,timer1没有此参数。
RunMenu.Enabled = true;
StopMenu.Enabled = false;
运行可以,就是停止StopMenu不会写,Form1窗体没timer1控件
StopMenu_Click 函数应该怎么写,谢谢!!
嗯,得把timer1拿出来定义辉比较行的通。
但是按一楼的在函数外实例化不成功。汗....
应该怎么实例化啊
System.Timers.Timer timer1;
然后:
private void RunMenu_Click(object sender, EventArgs e)
//到达时间的时候执行事件,周期为10秒;
timer1 = new System.Timers.Timer(10 * 1000);
//这里不要定义变量!
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick);
timer1.AutoReset = true; //设置一直执行(true)
timer1.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件
RunMenu.Enabled = false;
StopMenu.Enabled = true;
最后:
private void StopMenu_Click(object sender, EventArgs e)
timer1.Stop();
//这里停止计时
RunMenu.Enabled = true;
StopMenu.Enabled = false;
参考技术A //到达时间的时候执行事件,周期为10秒;
System.Timers.Timer timer1 = new System.Timers.Timer(10 * 1000);
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick);
private void RunMenu_Click(object sender, EventArgs e)
timer1.AutoReset = true; //设置一直执行(true)
timer1.Enabled = true; //是否执行System.Timers.Timer.Elapsed事件
RunMenu.Enabled = false;
StopMenu.Enabled = true;
private void timer1_Tick(object sender, EventArgs e)
//是连接sql,插入数据操作
停止StopMenu_Click,停止timer应该怎么实现呢
private void StopMenu_Click(object sender, EventArgs e)
timer1 .Enabled = false;
RunMenu.Enabled = true;
StopMenu.Enabled = false;
这样就行了,把Timer1拿出来
不然会提示你Timer1未定义 参考技术B timer1.stop();
以上是关于C#编写的WinForm程序,运行一段时间后越来越卡,怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
C#编写的程序 使用Webbrowser控件,占用大量内存?