为什么winform窗体在运行时一点就未响应

程序启动后 如果鼠标不动就没事,只要一点别的地方 窗口就未响应,开个QQ主界面也是的,点击窗口也变成了未响应,只要别的软件一打开就变这样了,其实后台还在运行,也能正确的运行完成 ,总之就是程序远行后 不能动,只到他运行完成
不知道是怎么回事 我以前定的程序 也没有出现过这样的问题了啊,纠结了两天,硬是没有找出问题在哪,拿以前的程序也做了对比,窗体的属性设置都是一样的
求大神来解答啊

在循环的语句后面加一句
Application.DoEvents(); 看看呢~

Application.DoEvents(); 就是刷新窗体信息的 你在循环体中加入这句 就不会卡死了~
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-24
循环向数据库添加数据,这些操作开启一个新的线程来做。
你可以使用控件BackgroundWorker来做。
第2个回答  2013-01-24
后台代码的问题~程序的主线程卡死了追问

那后台还在运行啊,并且也能出来正确的结果

追答

我知道~就好比批量写入数据到数据库~
一个FOR循环100多次的插入语句~
当插入几条后就会开始卡着~然后主线程就会阻塞~等过一段时间~就回复正常了~

追问

呃,我就是循环向数据库添加数据的,
有没有解决办法啊

追答

有~做个线程或委托~这样主线程就不会卡死~然后你在线程或委托结束后~给个返回标识~这样~主程序就能知道这个操作已经处理完了

追问

线程不会搞啊,而且时间也来不及了

追答

把你数据库循环添加的那块~提出来做成一个方法
然后实例化线程
Thread temp=new Thread(方法名);
开始他

temp.Start();
然后就可以了~
至于判断线程是否结束~你可以用个全局变量~或者在你添加的方法最后做一个能响应道前台的操作

为什么winform窗体在运行时一点就未响应
Application.DoEvents(); 就是刷新窗体信息的 你在循环体中加入这句 就不会卡死了~

C# winform程序运行几个小时后,程序未响应。如何排除这个问题?
一般出现程序未响应,都与主程序卡住有关系,重点看下连接数据库的地方,减少与数据库的连接时间,防止无限连接数据库!

winform窗体无法使用this.close()关闭窗口,一点击关闭按钮就未响应
回答:你看看有没有执行到,close方法。如果执行到了,还没有关闭的话,那你就把this关键字换成要关闭的窗体名。

C# WinForm Timeout 时间已到.在操作完成之前超时时间已过或服务器...
数据库我不是很懂,但是前几天我们服务器系统日志也有数据库超时错误信息,是硬盘有坏道、响应慢导致的, 后来换硬盘解决的

C# WinForm Timeout 时间已到.在操作完成之前超时时间已过或服务器...
说不定你在删除一条信息时,数据库表被另外的操作锁定,你的操作在等待,由于等待超时,所以报出这样的错,下次你调试的时候,原来锁表的那个操作已完成,所以主顺利通过了。

cwinform项目运行久了变慢
CWinForm项目运行时间延长后性能下降,可能由多方面因素导致。首先,内存泄漏是常见原因,持续运行的程序若未能正确释放不再使用的内存资源,会逐步消耗系统资源,导致响应迟缓。其次,数据库操作不当,如频繁打开关闭数据库连接、未优化查询语句等,也会增加应用负担。再者,UI界面更新不当,如在主线程中执行...

C# WinForm Timeout 时间已到.在操作完成之前超时时间已过或服务器...
看删除信息的表是否被锁住

C#WinForm中如何实现长摁一个按钮button实现循环执行一个操作,放开就停...
做一个Timer,MouseDown里开启Timer,在Timer的触发事件里做处理,不用循环,设定多久执行一次就好。在MouseUp里关闭Timer。

C# winform程序,UI界面锁死。如何处理?
Winform 程序,要想保证 UI 不卡死,只有将长耗时任务放到非UI线程运行这一个办法。而且现在早已进入多核时代,软件上多线程设计的思想要是要有的,不然的话,CPU的性能是不能充分利用的。楼主说的方法1与2,如其他回答所说一样,治标不治本。关于多线程编程,楼主可以参考下 Task 。这个类库在线程...

C# Timer lock 多线程 的几点疑问。
因为this在winform中指当前窗体,所以你就锁定了所有的THIS内的变量,控件.集体等待.也就是.LOCK会锁定对应变量\/对象的继承关系 3>静态的有什么好处,不是静态的有什么影响?请看第二问的答案.如果你看明白后你就会明白.如果你LOCK的始终是一个new出来的对象.那么大家其实就等于没有锁.因为我并没有使用...

相似回答