我的程序一运行,窗体就像死了一样,界面根本就不刷新

李天平 2004-05-12 06:58:20
在任务管理器里看并没占多少资源,很少,其他程序运行不受任何影响,就是这个程序自己的窗体像死了一样,把屏幕刷的一大块的不变.
请高人指点!
...全文
225 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
marvelstack 2004-05-13
  • 打赏
  • 举报
回复
是你的工作线程直接操作UI线程的原因。调用控件的Invoke方法,自己定义一个代理。
李天平 2004-05-13
  • 打赏
  • 举报
回复
我的FOR循环并没有占全部的CPU阿,只有一少部分,进度条还是变化的动的,就是窗体上的Lable的文本到最后变一下(循环最后的数值),并且程序执行时,窗体拖不动,拖了后好大一会才反应过来,

如果有别的程序覆盖这个窗体,在关闭别的那个程序界面后,屏幕上此程序的那块位置背景好长时间才刷新,高人指点阿
北京的雾霾天 2004-05-13
  • 打赏
  • 举报
回复
用Application.DoEvent();
或System.Threading.Thread.Sleep(100);
这样你的FOR就不会全部占用CPU了,会让程序来执行刷新等操作.
李天平 2004-05-13
  • 打赏
  • 举报
回复
谢谢各位老大,我试试,然后揭帖.

再问一句还有没有其他可能或者方法,我的程序里是执行一个for循环操作
KentYu 2004-05-13
  • 打赏
  • 举报
回复
同意楼上的说法,要把你的工作线程和界面线程分离开来.
参见http://www.yesky.com/20030225/1653758.shtml
linaren 2004-05-13
  • 打赏
  • 举报
回复
我遇到过这种情况,不过我只是把窗体的Show改为ShowDialog()就行了
你不仿试试
greatsft 2004-05-12
  • 打赏
  • 举报
回复
using System.Threading;
greatsft 2004-05-12
  • 打赏
  • 举报
回复
用多线程,因为你有时时更新的文字,在窗体上这部分代码占了整个程序的资源,因此窗体没办法刷新,或者做别的事情,把这部分代码放到线程中,比如:
void ShowWord() //时时更新的代码
{...}
void Form1_Load(object obj,EventArgs ea){ //窗体载入时触发
Thread thread=new Thread(new ThreadStart(ShowWord));
thread.Start();
...
}

wish u good luck
Greatsft
cgsw12345 2004-05-12
  • 打赏
  • 举报
回复
代码有问题,好好检查一个你的代码,以前我也好象碰到这种情况!也是代码的问题。
李天平 2004-05-12
  • 打赏
  • 举报
回复
补充一句,程序自身并没有死,进程一直在运行,只是界面不刷新(因为界面上有时时更新的文字)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧