窗体显示问题!小弟一直搞不定阿?大家来帮忙啊!

yefengzjfc 2006-07-25 10:11:14
小弟最近做了个磁盘文件扫描程序!就跟杀毒软件的磁盘扫描类似,但问题是我的CPU占用一直在70%以上,有什么方法可以降低CPU使用率吗?如果用多线程请给个思路,多线程小弟不熟!还有另外一个问题是当我最小化或者其他应用程序覆盖其上面是,当在显示时就窗体就变成一片空白,这是可原因,有解决的方法吗?是不是CPU占用过高引起的阿!!!请大家帮帮小弟阿!
...全文
286 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
aSalt 2006-07-26
  • 打赏
  • 举报
回复
就是说进程是没关掉的,窗体管掉没用阿。我要相关的进程也结束掉啊
------------------------------------------------------
在窗体关闭事件 From_OnClosing 里写
Application.Exit();
yefengzjfc 2006-07-26
  • 打赏
  • 举报
回复
还有另外一个问题MySql中如何批量更新数据库
我用的是MySQLDriverCS的,里面没有跟SqlCommandBuilder类似的对象
那如果要批量插入几万条数据,做循环的效率很低的阿
有什么好的解决方法没?前提是在使用MySQLDriverCS下
Knight94 2006-07-26
  • 打赏
  • 举报
回复
to 我已经写了这个事件了,但是还是没用,进程依然存在。而且依然在运行!

你应该先关闭线程,比较好的方法设置开关变量来关闭此线程,否则用Application.ExitThread方法来强制关闭。
Knight94 2006-07-26
  • 打赏
  • 举报
回复
to 还有另外一个问题是当我最小化或者其他应用程序覆盖其上面是,当在显示时就窗体就变成一片空白,这是可原因,有解决的方法吗

是单独开线程来完成搜索操作吗,如果是的话,建议适当的sleep一段时间。
GXY2005 2006-07-26
  • 打赏
  • 举报
回复
我已经写了这个事件了,但是还是没用,进程依然存在。而且依然在运行!
----------------------
一定用了死循环,你要给它个结素循环的标志!
GXY2005 2006-07-26
  • 打赏
  • 举报
回复
CPU占用一直在70%???
------------------
你要好好考虑你现在的算法能否改进。
界面变白,是你程序CPU占用一直在70%的结果,要考虑多线程或异步。
yefengzjfc 2006-07-26
  • 打赏
  • 举报
回复
TO: yuanarea(Sail before) ( ) 信誉:100
在窗体关闭事件 From_OnClosing 里写
Application.Exit();
------------------------------------------
我已经写了这个事件了,但是还是没用,进程依然存在。而且依然在运行!
soooc 2006-07-26
  • 打赏
  • 举报
回复
多线成不能减少CUP使用率,
同意Application.DoEvents观点
yefengzjfc 2006-07-25
  • 打赏
  • 举报
回复
接上面说
就是说进程是没关掉的,窗体管掉没用阿。我要相关的进程也结束掉啊
yefengzjfc 2006-07-25
  • 打赏
  • 举报
回复
还有就是当我使用了Application.DoEvents语句后
在磁盘文件还在扫描的时候我把窗体关了,但是那个进程还是占用着的!这是什么原因?
有什么办法可以解决吗?
yefengzjfc 2006-07-25
  • 打赏
  • 举报
回复
bejon(阿牛) ( ) 信誉:100
能给个使用io的异步存取的例子吗?
邮箱:zjfcyefeng@126.com
阿牛138588 2006-07-25
  • 打赏
  • 举报
回复
线程的使用:
dim ther1 as system.threading.thread
ther1=new thread(address of sub1) '注sub1就是你实现处理磁盘的过程
窗体变成空白是假死现象,使用多线程可以避免

一些建议:
在处理磁盘整理时可以适当使用Application.DoEvents语句
如果果有大量的文件读书,建议使用io的异步存取,使程序占用cpu和系统资源减低到最少。
dadaxigua 2006-07-25
  • 打赏
  • 举报
回复
开一个线程来扫描,窗体就不会死了,另外就是线程可以设置优先级别,应该可以减低CPU的暂用吧。
www_123du_com 2006-07-25
  • 打赏
  • 举报
回复
Application.DoEvents是处理消息,你的鼠标事件,界面显示等都是消息。没有什么问题的。
yefengzjfc 2006-07-25
  • 打赏
  • 举报
回复
Application.DoEvents具体的涵义是什么啊?
在循环体里调用会不会出现异想不到的问题啊!!这样可以划不来哦
呵呵
yefengzjfc 2006-07-25
  • 打赏
  • 举报
回复
还有另外一个问题MySql中如何批量更新数据库
我用的是MySQLDriverCS的,里面没有跟SqlCommandBuilder类似的对象
那如果要批量插入几万条数据,做循环的效率很低的阿
有什么好的解决方法没?前提是在使用MySQLDriverCS下
noway8881 2006-07-25
  • 打赏
  • 举报
回复
用多线程,界面就不容易假死
MyLf 2006-07-25
  • 打赏
  • 举报
回复
你在循环体中,适当加上Application.DoEvents语句...

110,538

社区成员

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

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

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