为什么我的程序在2000下跑着跑着就自动退出了?(100分)

  • 主题发起人 主题发起人 honestman
  • 开始时间 开始时间
H

honestman

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序用Cport控件接收串口的信息,然后分析信息,并更新SQL Server数据库中的
信息。当然考虑到数据库读写速度问题,我开了六个线程来处理这些信息。
我在98下编译运行这个程序,程序跑了一天没有问题。
但是在2000下编译运行了不到半个小时,程序就自动退出了,没有任何出错信息,好象
什么事情都没有发生。
但是,正常情况下,退出前是会有个退出确认框弹出来的。

为什么它会自动退出呢?
 
程序里面有没有timer控件
 
程序里面有timer控件。
每半秒触发一次,判断是否缓冲中是否有数据?
如果有,就唤醒线程处理。
 
在2000下重新编译一下吧!
 
to snjat:
但是在2000下编译运行了不到半个小时,程序就自动退出了,没有任何出错信息,好象
什么事情都没有发生。
 
什么情况下你让程序退出。
把那段代码拿来看看
 
一般在2000下自动退出相当于在98下执行了非法操作!所以有肯能在操作串口的时候执行了非法
操作,我建议如果用控件得话一般用有源码的,这样错了也可以修改或知道错在那里!
 
应该是“执行了非法操作”,在Win98下会出现非法操作的提示,在Win2000下就会直接
退出。
 
但是,不是一运行就退出啊?是运行到中间才退出。
而且在98下跑完全没有问题!
 
怪事年年有,今年特别多。
我同事的环境跟你差不多:BCB4+CPort+NT4+SP5+SQL2000
他的程序倒是没能自己退出,不过居然把WWW服务给弄停了,
也是一点迹象都没有。
 
是否CPort本身有BUG啊?
我用的是ComPort Library version 2.62,算是最新版了。
而服务器是用SQL Server 7.0。
 
谁知道呵,我没用过CPort,它注明可以用在NT上吗?有源码吗?
你程序退出的时间也是不定的,是吧?
我看见的是有时可以连续运行一个月,有时几分钟服务就停了,
可是重新开启服务还好用,不用重起NT,而且日志里也只有开启记录,没有停止记录,
真是奇怪,看来是NT配合CPort干的, 呵。
不过有一点是肯定的,NT下操作串口的方式跟9X是不一样的,也许这里有兼容性问题。
 
我现在发现,如果我开着那个程序的机器不做其他的事情,程序可以一直跑下去,但是
如果想顺便做其他的事,例如:开IE上网浏览其他东西,或者开其他程序,那个程序就
会自动退出。
很有风度啊!
 
把几千行的代码重新认认真真地检察了一遍,把所有数组的长度增加10倍,问题就解决
了。
原来是缓冲溢出啊!!!
不知道为什么在98下却没有溢出???
现在的程序要吃几十兆的内存。
 
后退
顶部