各位高手富翁,帮忙看看,多线程也能造成主界面死,什么原因? ( 积分: 50 )

to ZBJ2001_KF,lichengbin:
你们两个说的同步到循环里面,问题果然解决了,谢谢.
顺便再问一句,lichengbin,因为我的程序里面要定时采集多个交换机或者路由器上的mib库中的一些信息,在定时器timer方面,有什么好的办法,说说的的见解,谢谢.我也自己会查相关的帖子看看的.
to ymjy:谢谢你贴过来的代码,辛苦了,[;)]
 
呵呵,象你这种情况,确实有必要用多线程的,就如我上面说的,“Timer + 线程”的方式应该可以,我自己在很多应用中都采用这种方式。[:)]
 
但是这个timer应该是每个线程里面都有哦,因为时间间隔不一致,这样的话会不会造成冲突![:)]
 
不要每个线程来个Timer,直接在主窗体上放个Timer来用即可啦,不同间隔就用多个Timer或者在OnTimer中动态调整Interval呗
 
我来说两句,实际上lichengbin说的,“Timer + 线程”的方式,我想他的意思应该是:在主界面使用Timer,线程应该只管处理事务方面的事情,具体的流程应该由主界面来管理。所以建议不要在线程中使用Timer。
 
呵呵,有点难度哦,我采集网络设备mib信息的线程数量是不确定的,当然可以给定一个最大的数值,在这个数量之内来创建采集线程,但是怎么针对每个线程呢?比如有10兆口的,采集间隔15分钟以内,100兆口,采集范围5分钟以内,.......在主界面上放这么一个,能用吗?我也不想在线程里面使用timer,因为这个处理级别最低.而且,线程一旦创建,就一直在内存中保留,比较占内存.我看到有人提示使用setevent,waitforsingleobject等来完成定时的功能,我觉得这个不错,但是谁做过啊,给我个提示,谢谢!
 
“线程一旦创建,就一直在内存中保留,比较占内存”
对于现在常规的软件开发来说,不需要考虑内存占用、硬盘空间的问题。又不是20年前,内存只有几百K或者1、2M的。而且一个VCL线程对象和线程内核对象,内存能占多少字节?你普普通通的一个窗体,上面随随便便放几个组件,内存占用比这不知多了多少了,更不要说用第三方组件啦。
至于10兆口的,采集间隔15分钟以内,100兆口,采集范围5分钟以内, .......,如果干的事情是完全相同的,那么写一个线程类即可,如果不是,那么写多个线程类就是啦,Timer用不同Interval的Timer,各自负责一个任务,定时触发Event就结啦
 
具体问题如 [ //来自:lichengbin, 时间:2005-8-28 17:04:53, ID:3183254 ]所说,你这样用线程是有些问题的.我没有办法知道你究竟有什么需求,我只能根据你贴出的代码,和你所描述的问题来判断.但就你在楼顶贴出的代码,线程没有起到应有的作用.而依照你后来补充的需求,多线程是要用的,但是需要改变你的线程的使用方法.
另外,我想你可能理解偏了我的意思.我说的还是比较清楚地,第一个句子,句号之前,我指出自己认为你的线程的用法有些问题(语气先不管他).这个是主要意思.第二个句子,所表达的是有前提的,一个前提是[单就你贴出的代码功能],另一个隐含的前提就是第一个句子所包含的.至于你所说,我没有提出自己的建议,而在我看来,我所说的看书和翻帖子,就是我的建议,因为在我所说的第一句主要意思的前提下(前提就是假定正确),那么你对多线程的基本概念上有欠缺,那么我建议看书自然是理所当然的,难道你认为看书除了汲取知识之外还有什么特殊的象征和含义?
我似乎并没有在什么地方要开罪楼主.DFW这么长时间,基本上我还是谨言慎行的.我从来无意指责别人如何,因为我找不到这样做的理由.
不过你可以想象,有的时候,说出的一些话,语气可能有些问题,如果你细想之后,仍然认为我属于RPWT,我这个人,最不喜欢的就是虚的,我在后边会真心的/虔诚的向你道歉.
 
to zjan521:现在没有必要追究什么了,总算是不打不相识,本贴到此结束.谢谢大家.同时也很高兴,认识这么多高手.把分散了!
 
多人接受答案了。
 
顶部 底部