CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

请教VB.NET中Timer控件问题(Tick无法运行到)

楼主xweilin()2005-06-01 22:17:04 在 .NET技术 / VB.NET 提问

我的程序中有一段延时程序,是利用timer控件的,其程序如下:    
  Timer1.Interval   =   1000    
  Timer1.Enabled   =   True    
  While   Not   TT    
      Application.DoEvents()    
  End   While    
  Timer1.Enabled   =   False    
  TT   =   False    
   
  而timer处理程序如下:    
  Private   Sub   timer1_Tick(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)    
      TT   =   True    
  End   Sub    
   
  然而在调试程序时,我用当运行到Application.DoEvents()时,就一直停滞不前,逐步调试程序一直停留在Application.DoEvents()中,而全速运行时timer.Interval的值一直是1000,TT的值为false,而CPU的使用率达到99%。无论怎样运行,CPU的使用率达到99%,在VS中按暂停后指示运行到Application.DoEvents(),就算是关闭所编的软件,软件没有自动关闭,CPU还是99%,按VS暂停按钮后还是指示运行到Application.DoEvents(),只有按VS的终止调试才停止软件的运行  
   
  不明白为什么不能正常运行,请教各位高手,究竟是什么问题,如何解决这个延时问题? 问题点数:20、回复次数:7Top

1 楼rzpc(淡蓝色)回复于 2005-06-01 22:41:32 得分 5

延时没有这么干的,呵呵  
   
  计算机执行程序就像是一个人在跑步  
  延时,只须让跑步的人休息一下即可。而不是让这个人原地不停地转圈跑,那多累啊。  
   
  延时     很简单的,控制一下当前的线程即可,语法如下:  
  Threading.Thread.Sleep(延时时间-[毫秒])  
   
  例1:延时3秒  
  Threading.Thread.Sleep(3000)  
   
  例2:延时1小时  
  Threading.Thread.Sleep(3600000)  
   
  例3:延时1年  
  For   I   as   Integer   =   1   to   365:Threading.Thread.Sleep(86400000):Next  
  Threading.Thread.SleepTop

2 楼AntingZ(夕惕若)回复于 2005-06-01 22:43:03 得分 15

你的代码中其他地方有没有:AddHandler   Timer1.Tick,   AddressOf   Timer1_Tick  
   
  或者是你的  
  Private   Sub   timer1_Tick(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)    
      TT   =   True    
  End   Sub    
  漏了Handles   Timer1.Tick  
  这样看看:  
  Private   Sub   Timer1_Tick(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Timer1.Tick  
                  TT   =   True  
  End   SubTop

3 楼AntingZ(夕惕若)回复于 2005-06-01 22:45:17 得分 0

如果仅仅是为了延时的话,因该用rzpc(淡蓝色)的方法比较合适Top

4 楼AntingZ(夕惕若)回复于 2005-06-01 22:48:54 得分 0

to   rzpc(淡蓝色):  
  例3:延时1年  
  For   I   as   Integer   =   1   to   365:Threading.Thread.Sleep(86400000):Next  
  Threading.Thread.Sleep  
   
  哈哈,这个例子太cool了    
  Top

5 楼Ninputer(装配脑袋)回复于 2005-06-02 08:31:40 得分 0

用rzpc(淡蓝色)的方法延时会让主线程失去响应,呈死机状。楼主应该是想“空闲延时”,即延时执行方法,但同时可以进行其他操作。这里最好根据你需求重新设计一下,因为空闲延时会造成不同步问题。Top

6 楼AntingZ(夕惕若)回复于 2005-06-02 08:50:09 得分 0

‘结合循环  
                  For   i   As   Int32   =   1   To   20  
                          Application.DoEvents()  
                          Threading.Thread.Sleep(50)  
                  NextTop

7 楼ls_hndd(三人行必有吾师)回复于 2005-06-02 22:22:26 得分 0

markTop

相关问题

  • vb做控件
  • vb的控件!
  • Timer控件
  • Timer控件
  • csdn_kun学vb,求教之一:timer控件的用法。
  • java 实现 vb中timer控件的功能?
  • ●VC下有没有像VB里Timer这样的控件?●
  • VB控件编程
  • vb与ole控件
  • vb与ole控件

关键词

  • sleep
  • 软件
  • application
  • cpu
  • tick
  • timer
  • 运行
  • doevents
  • rzpc
  • 延时

得分解答快速导航

  • 帖主:xweilin
  • rzpc
  • AntingZ

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo