VB Timer控件运行一段时候自动停止

gitbyte 2009-11-06 02:56:20
VB Timer控件运行一段时候自动停止
'//测试过了很郁闷- -。本机调试没问题。放到其他机子就出问题了。刚开始以为是加壳之后或者vmp之后才出问题
后来发现- -不加壳。也一样停。输出p代码测试了还是停了。用本地代码也一样。

是同时开了好几个程序测试的。有几个停的快。几个停的慢。。在timer事件的开头都加了显示信息。
也就是说timer事件停了。。很郁闷。重新true也不行。。

本机运行很长时间都没问题。。里边代码都一般。其中有这样的
Interval属性让他随机变

text4.text=2 '//这些都没问题的
'//Randomize
'//Timer_ZDsell.Interval = Val(Text4.Text) * 1500 '//+ Int(Rnd() * 1000 + 500)

不知道是不是经常换Interval引起的。- -碰到的朋友看看。无语了。探讨一下。
...全文
2054 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
gitbyte 2009-12-19
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 zdhysd1 的回复:]
cpu%50左右应该是有死循环了,双核的一个线程死循环差不多就会占掉一个cpu。
[/Quote]
首先感谢楼上的!zdhysd1
汗- -。楼山的一句点破。。。。。以前只在网速慢的时候注意到connet不上。状态连接。所以一直doevent。而且也没有处理。后来在别的程序上加了处理了。这个程序没处理- -。我知道哪里错了。
感谢= =楼上的。。。否则我都不知道为什么会50%-100%
zdhysd1 2009-12-17
  • 打赏
  • 举报
回复
cpu%50左右应该是有死循环了,双核的一个线程死循环差不多就会占掉一个cpu。
gitbyte 2009-12-17
  • 打赏
  • 举报
回复
'//Timer_ZDsell.Interval = Val(Text4.Text) * 1500 '//+ Int(Rnd() * 1000 + 500)

- -不会。不过这只是我自己随便抽出来的一段。
text4是不可能为空。因为执行前先判断。为空。非数字说白了就是输入间隔时间。只不过给人看看
后边的'//+ Int(Rnd() * 1000 + 500) 这是+上去的。后边这个最少也等于500毫秒= =
cbm666 把我和谐了吧- -我的错。没给出原生态代码。。探讨一下。呵呵
cbm6666 2009-12-17
  • 打赏
  • 举报
回复
呵呵....睡觉前回你 也相信你不会犯这低级错误

但是请看看你1F的代码

你1F 的代码 (别地方我看不到) 难道不会有等於 0 的时侯 ?

无语了。探讨一下
gitbyte 2009-12-17
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 cbm666 的回复:]
随机数 你这样写 当它为 0 时 Interval=0 Timer1就再也没机会了,因为等於零 相当於 Timer1.Enabled=False

要改为 Timer_ZDsell.Interval =  Int(Rnd * 1500) + 1  保证大於 0

[/Quote]
- -。这种低级错误。对于初学者来说可能会犯。rnd的范围大家都知道是>=0 <1 我肯定是加了放心。

msgbox 没有弹出。中途无任何错误。而且我一般不会用msgbox。直接用api messagebox
msgbox会暂停。

因为整个程序已经做好了。如果变动的话。超级多。单个timer来控制 好多。看的会头晕
我也是根据sunxinyu 一样想的。另外一个timer。隔断时间来执行以下command1的click事件
然后再click一下。。
现在也只能这样。没出过问题了。调试了一段时间。- -我怀疑是不是它cpu山寨版的。还是编译器问题。
感谢各位。先这样。
赵4老师 2009-12-08
  • 打赏
  • 举报
回复
换个思路试试:
别用多个Timer,改用一个Timer和一个全局标志变量,根据这个标志在新的Timer处理中轮流运行原来各Timer处理中的任务。
cbm6666 2009-12-07
  • 打赏
  • 举报
回复
随机数 你这样写 当它为 0 时 Interval=0 Timer1就再也没机会了,因为等於零 相当於 Timer1.Enabled=False

要改为 Timer_ZDsell.Interval = Int(Rnd * 1500) + 1 保证大於 0
zdingyun 2009-12-07
  • 打赏
  • 举报
回复
如果LZ在Timer事件中有Msgbox语句将会干扰Timer计时器的正常运行.
sunxinyu 2009-12-07
  • 打赏
  • 举报
回复
mark一下。能不能再开个timer,用这个定时器专门轮流定期的关闭、打开其他工作的timer。
gitbyte 2009-11-28
  • 打赏
  • 举报
回复
HOHO。。。那个什么。= = 问题还没解决。我都改了timer里边的代码。精简了。就10句。
没有什么判断。这小效率很高。不过还是停止。可以肯定timer直接停了。。我晕死。
我是用timer来模拟sock发送。用text的Change事件来处理返回的信息。然后再发送。
本机3.5gb内存。双核 e1400 2gbcpu。sp3。ghostxp 电脑城装机版。调试运行。开个6.7个都没问题。

换了他的机子就这样。它的系统也重新装过。换个不同的系统。。上边我也说了。有一个卡主。cpu就50%。
还正常运行着。

有一个很怪的现象。timer是挂了(停了就正常- -就是true就挂掉。不动)。如果这时你通过其他按钮。有一个手动刷列表的。它是手动来发sock模拟信息。点一下那个按钮。过一会儿。timer就又开始工作。工作一段时间就又挂了。
现在只能用另外一个timer来执行commandbox 的click事件。。
嗷嗷叫的老马 2009-11-10
  • 打赏
  • 举报
回复
.............建议你如果解决了此问题,把结果发上来,搞清楚原因.

我们这里无法构建与你那里相同的环境,问题也没有办法重现,能提供给你的只能是一些猜测与建议.
gitbyte 2009-11-09
  • 打赏
  • 举报
回复
没辙了- -消息。。。不现实。。而且timer可没有什么消息可以截取。无语了。。其他的设置了都是没用的
发现个问题。如果这个程序停了。cpu它基本会暂用45%-50左右。
嗷嗷叫的老马 2009-11-07
  • 打赏
  • 举报
回复
用SPY++看看窗体的消息吧.
嗷嗷叫的老马 2009-11-07
  • 打赏
  • 举报
回复
WINDOWS的消息队列最大消息数量为10000好象,如果产生消息的速度比处理消息的速度快,多余的消息就会被丢弃.....

而你的程序还要"开了大约6-7个",说明要处理的数据确实挺多

如果正好流程中需要利用TIMER事件进行连接,并且正好丢弃了这个消息,就不会产生相应定时器的TIMER事件,于是你的流程也就中断在那里了..........

以上是一种可能性,具体是啥情况你得自己研究.
gitbyte 2009-11-07
  • 打赏
  • 举报
回复
- -在本机调试过了。开了7。8个。运行n久。都没问题。。。现在只能让那边换个操作系统了。开3个也不行cpu40%左右也不可以。还有会一个挂掉。慢慢第二。依次。
gitbyte 2009-11-07
  • 打赏
  • 举报
回复

gitbyte 2009-11-07
  • 打赏
  • 举报
回复
有一个想象就是他的CPU。开了3个没事。才20%都不到。开多个。直接就是100%。
而我的机子开了5个。走动的话。最高才40%。最小化。走动5%-20%之间……。
gitbyte 2009-11-07
  • 打赏
  • 举报
回复
- -可怜的娃。惨呢。我这xp sp3好像没啥问题。那个机子是sp2
开了6-7个cpu就100了。
6-7个不是timer。是程序- -。同一个主程序.exe 打开了6.7个。 最后可能就1个在。再过一会儿就一个都挂了。
在timer事件里边有放着doevents和sleep 的过程。用来暂停的。好像也不是这个问题。昨天就都去掉了。也一样。真郁闷。真痛苦- -。去年一个程序也是这样。其他都好好地就做这种发包的就会这样。以前的不加壳就没事。加了壳就出问题了。真不好搞。火大。。 - -、。
贝隆 2009-11-06
  • 打赏
  • 举报
回复
飘过
gitbyte 2009-11-06
  • 打赏
  • 举报
回复
- -测出来了。、。开了大概6-7个。。已经挂了。挂了的
测试出来了。
MsgBox Timer_ZDsell.Interval
MsgBox Timer_ZDsell.Enabled

时间有的2000
Enabled也有。true。。。就是不动。- -
加载更多回复(9)
VB试题.doc 一、 填空题 1.VB中若要产生一消息框,可用__msgbox__函数来实现。 2.常量是指在程序运行过程中, 其值不能改变 的量。 3.整数类型数据分别包括整型和 长整型 数据。 4、在VB集成开发环境中,运行应用程序的方法有三种:一是_单击“运行 ”菜单下的启动_;二是_单击工具栏上的启动按钮;三是_按F5键 。 5、在VB中若要让某对对象获取焦点,则可通过__ Setfocus_方法来实现。 6.列表框(ListBox控件)显示 项目列表 ,用户可从中选择一个或多个项目。 7.框架(Frame控件)可以用来 对其它控件 进行分组,以便于用户识别,主要用于为单选按钮分组。 8、在VB中,用来描述对象外部特征的量称之为对象的_属性__。 9、为使某窗口中的命令按钮“取消(C)”具有如下特性:按“Alt+C”键或按 “ESC” 键,均可代替用鼠标单击该按钮的操作,应设置该按钮的Caption属性值为_取消(&C)___,并且设置其_ Cancel__属性值为__ True__。 10、在过程内用_ Static__声明的变量为静态变量,在执行一个过程结束时,过程中所用到的 Static变量的值会保留,下次再调用此过程时,变量的初值是上次调用结束时被保留的值。 11、在模块文件中的声明部分用Global或__ Dim__关键字声明的变量为全局变量。 12、在模块文件中的声明部分用__ Dim__或__ Private__定义的变量为模块级变量。 13.计时器控件通过定期激活Timer事件,使得Timer控件 可以每隔一个时间段 就执行一次Timer事件中的代码。 14.要获得滚动条的当前位置,可以访问通过 Value 属性来实现。 15.关闭正在运行VB窗口将自动触发的事件是 Unload 。 二、选择题 1.工程文件的扩展名是( B )。 A.vbg B.vbp C.vbw D.vbl 2.在以下窗体中没有采用的控件是( B )。 A.文本框 B 垂直滚动条 C.框架 D 命令按钮 3.滚动条控件(如图所示)的Largechange属性所设置的是( A ) A. 单击滚动条和滚动箭头之间的区域时,滚动条控件Value属性值的改变量 B. 滚动条中滚动块的最大移动位置 C. 滚动条中滚动块的最大移动范围 D. 滚动条控件无该属性 4、用于从字符串左边截取字符的函数是( A ) A、Ltrim( )  B、Trim( )  C、Left( )  D、Instr( ) 5、可获得当前系统日期的函数是( A )
前 言 visual basic继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。随着21世纪信息社会的到来,计算机在人们的工作和生活中的深入,要求我们越来越多地与计算机打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。于是我们小组着手设计开始一个这样的游戏软件。通过这学期来Visual Basic的学习,我初步掌握了Visual Basic语言的最基本的知识,于是在化希耀张兵等老师的指导下动手用Visual Basic编写俄罗斯方块游戏。 无可争议,《俄罗斯方块》是有史以来最伟大的游戏之一。它是永恒的娱乐经典,但它实际上又和那些传统的经典娱乐方式不同,因为它的本质是电子化的,所以它的确属于现代产物。《俄罗斯方块》举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观。某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似《俄罗斯方块》触动了我们某些内在的感官,使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。 在曾经发布过的所有游戏中,《俄罗斯方块》还被认为是仅有的一个能够真正吸引广泛人群的作品。某些批评家也许会声称,《俄罗斯方块》要比过去二十年间出现的任何东西都要浪费人们的时间。至于我们,则要欣然提名它为GameSpot评选出的历史上最伟大游戏之一。 为了怀念经典,也为了能够给大多的计算机用户在工作之余找到一个休闲、娱乐的一个方式,我们小组开始着手用VB语言开发一个经典的俄罗斯方块游戏。 工程概况 1.1 项目名称 俄罗斯方块游戏 1.2 设计平台 VB 全称Visual Basic,它是以Basic语言作为其基本语言的一种可视化编程工具。 Vb是microsoft公司于1991年退出的windows应用程序开发工具visual意思是“可视化的”。在它刚推出来时,自身还存在一些缺陷,功能也相对少一些。但是经过多年的开发研究。最近microsoft公司又推出了VB6.0版本 VB6.0运行环境:硬件,要求486以上的处理器、16MB以上内存,50MB 以上的硬盘,cd-rom驱动器,鼠标。软件:要求windows 95以上版本。 1.3程序设计思想 游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳,所以我们在游戏中添加了漂亮的场景和动听的音乐,设置了过关升级的功能,激发大家的娱乐激情。 从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我们在设计中在一个图片框中构造了一个4*4的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7中造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的,在游戏中,用户也可以使用向下键加快下落速度,定义一个变量,对消除的函数进行记录,最后就可以得出用户的分数,用if 语句对分数判断,达到一定的积分就可以升级到下一个档次。 俄罗斯方块游戏设计的主要步骤为以下10个方面: (1)游戏界面的设计。 (2)俄罗斯方块的造型。 (3)俄罗斯方块的旋转。 (4)俄罗斯方块的运动情况(包括向左,向右和向下)。 (5)俄罗斯方块的自动消行功能。 (6)游戏级别的自由选择。 (7)游戏速度的自由选择。 (8)游戏得分的计算。 (9)游戏菜单选项的设计及功能实现。 (10)游戏的背景音乐。 1.4运用的控件和主要对象 我们在设计过程中主要用到的控件有:command控件,image控件,picture控件,label控件timer控件,text控件,windows media player控件等等。 1.5主要实现的功能 我们开发的俄罗斯方块游戏,主要实现了以下几种功能: 1.可以灵活控制方块在图形框中运动。 2.游戏过程中方块可以自由旋转。 3.当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。 4.游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块下落速度,游戏等级为初始游戏时在基层随机生成一定行数的无规律方块,生成的行数由你来选择,每行至少产生5个以上的无规律方块,这样增加了游戏难度,对于游戏高手来说,无疑不是一个新的挑战。 5.游戏的得分支持积分,并且按照公式: 得分 = 原来分数+ 100 * (2 ^ 同时消除的行数-1) 这样,你同一时间消除

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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