qhnw.net
当前位置:首页 >> C# winForm程序出现界面无响应 >>

C# winForm程序出现界面无响应

1. 你可以在循环外设个断点调试一下,看看有没有正常退出循环.2. 在调试功能里找窗口-》线程,看看当前工作线程是哪个.

在循环的语句后面加一句 Application.DoEvents(); 看看呢~ Application.DoEvents(); 就是刷新窗体信息的 你在循环体中加入这句 就不会卡死了~

检查一下内存和cpu占用情况.

直接启动一个线程去做你的事,通过一个全局变量判定执行状态即可.using System.Threading;Thread th1;void tx1(){ 你的事}要做事的时候th1 = new Thread(tx1);th1 .IsBackground = true;th1 .Start();

主要是因为UI线程被长时间的操作阻塞了.BackgroundWorker算是一种方法.如果不需要太多操作的话,还有一种更简单的方法.就是如果你在UI刷新过程中采用了长时间运算的for循环之类导致阻塞,可以试试在for中每次循环结束时,加一句Application.DoEvent() .大致应该是这句,记不清了,自己查下.效果可能不如BackgroundWorker好,但是也能凑乎用.最后只说一句,Vs2005的C# 和 Delphi太像了,应该是设计Delphi的人开发的,不过Vs2008开始已经超越Delphi了,现在的Delphi已是昔日黄花,太不给力了.

您好,我看到您的问题很久没有人来回答,但是问题过期无人回答会被扣分的并且你的悬赏分也会被没收!所以我给你提几条建议:一,你可以选择在正确的分类下去提问,这样知道你问题答案的人才会多一些,回答的人也会多些.二,您可以到与您问题相关专业网站论坛里去看看,那里聚集了许多专业人才,一定可以为你解决问题的.三,你可以向你的网上好友问友打听,他们会更加真诚热心为你寻找答案的,甚至可以到相关网站直接搜索.四,网上很多专业论坛以及知识平台,上面也有很多资料,我遇到专业性的问题总是上论坛求解决办法的.五,将你的问题问的细一些,清楚一些!让人更加容易看懂明白是什么意思!谢谢采纳我的建议! !

有两种简单地方法可以解决这个问题.1.使用多线程,把ckbind处理放到子线程里,就不会影响主窗体响应系统事件了,也就不会无响应了,有心的话,还可以做成主窗体不可用,再来个进度条,让人一看就知道在执行一个很长的处理,而且程序还在运行中.2.在ckbind里如果是循环导致的事件过长,可以在循环固定次数时,调用Application.DoEvent();方法,使程序响应一次系统事件,虽然看不出程序动,但是肯定不会无响应,因为系统判定无响应是只一定时间内,程序不能响应系统事件,所以在这个时间到达之前响应一次,就不会有无响应的问题了.

单线程都是这样的.如果采用多线程就可以避免这样情况发生,重新其一个新线程.像这种情况一般用 BackgroundWorker1 就可以了. 添加DoWork函数 private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {

timer的interval设置的长一点,或者进入timer后执行timer.stop() 文件操作完成后,执行timer.start()

可能有一个大的循环占用了主线程,建议使用多线程

网站首页 | 网站地图
All rights reserved Powered by www.qhnw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com