标题:这段程序运行中经常造成系统无响应,大侠们看看,问题出在哪里啊
取消只看楼主
Pgwyg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-6-10
 问题点数:0 回复次数:8 
这段程序运行中经常造成系统无响应,大侠们看看,问题出在哪里啊
1,经常在19:00:00点停止写数据
2,经常在23:59:59引起程序无响应,此时必须用程序管理器终止程序
3,不定时发生,发生的时间一定是上面的时间
4,使用TRY没有捕捉到任何错误信息
星号下是程序,烦请各位大侠看看,谢了!


*
当前时间=DATETIME()
*显示时间
IF thisform.timexs.Caption!=TTOC(当前时间)
    *更新时间显示
    thisform.timexs.Caption=TTOC(当前时间)
    *整点(每60分钟)保存一次水表数据
    IF MINUTE(当前时间)=0 AND sec(当前时间)=0 &&
        累计供水=THISFORM.TEXT10.Value
        当日用水=THISFORM.TEXT11.VALUE
        累计回水=THISFORM.TEXT12.Value
        当日回水=THISFORM.TEXT13.Value
        INSERT INTO DATA\COUNT_DATA (编号,采集,累计,当日) VALUES (yh_gsbh,当前时间,ALLTRIM(STR(累计供水,20,5)),ALLTRIM(STR(当日供水,20,5)))
        INSERT INTO DATA\COUNT_DATA (编号,采集,累计,当日) VALUES (yh_hsbh,当前时间,ALLTRIM(STR(累计回水,20,5)),ALLTRIM(STR(当日回水,20,5)))
        thisform.label25.CAPTION=TTOC(当前时间)+" 供水和回水流量计(水表) 的数据已经保存! "   
    ENDIF
    *每天23时为水表日结算时刻,数据初始化
    IF HOUR(当前时间)=23&& AND MINUTE(当前时间)=59 AND SEC(当前时间)=59   
        上报状态=.F.
        昨日供水=累计供水
        当日供水=0
        昨日回水=累计回水
        当日回水=0
        THISFORM.TEXT10.Value=累计供水
        THISFORM.TEXT11.VALUE=当日供水
        THISFORM.TEXT12.Value=累计回水
        THISFORM.TEXT13.Value=当日回水   
    ENDIF
    *每日4时自动推送数据,如果不成功,在此时间内相隔10分钟再次推送
    IF HOUR(当前时间)=4 AND MOD(MINUTE(当前时间),10)=0
        IF 上报状态=.F.
            THISFORM.上报()
        ENDIF
    ENDIF
    *每天早上6时开始采集水表数据,0 时结束
    IF HOUR(当前时间)>=6 AND HOUR(当前时间)<>0    &&AND MINUTE(当前时间)=0 AND SEC(当前时间)=0
        *读表状态=.t.
    ELSE
        *读表状态=.f.   
    ENDIF
ENDIF
搜索更多相关主题的帖子: Value thisform 当前 时间 AND 
2022-06-12 09:18
Pgwyg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-6-10
得分:0 
timer的时间间隔是1000毫秒,insert正常,TRY未能捕捉错误
2022-06-12 10:05
Pgwyg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-6-10
得分:0 
读水表远程上报程序,有时运行几天没问题,有时一天就没响应,但是时间就是19点和23点这两个时间段,其他时间没问题,不写数据库也会出现问题。
2022-06-12 11:23
Pgwyg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-6-10
得分:0 
试过了,不灵
2022-06-12 12:11
Pgwyg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-6-10
得分:0 
关键是两个时间点让人费解
2022-06-12 12:12
Pgwyg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-6-10
得分:0 
手机版不能截屏
2022-06-12 12:18
Pgwyg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-6-10
得分:0 
timer控件初始化在表单INIT事件中,代码如下:
Do while .t.
If sec(datetime())=int(sec(datetime()))
Thisform.timer1.interval=1000
Thisform.timer1.reset
Thisform.timer1.enabled=.t.
Exit
Endif
Enddo
延时程序是这样的:
Function wait_time
Lparameter  x_time
Do while second()>x_time
Enddo
Return .t.
Endfnc

使用inkey()或wait光标随意乱闪,看着不舒服
2022-06-12 15:17
Pgwyg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-6-10
得分:0 
回复 16楼 mywisdom88
谢谢您,我需要整点保存数据,而且要有时间显示,原来使用一个timer实现时间同步显示、实时数据采集、和数据保存,出现问题后又添加了一个专门负责数据采集,还是出现程序无响应的问题,即使停止数据采集工作,也是这样,现在又加了一个计时器,专门负责时间显示,看看能否成功。百思不得其解的是有时工作几天没问题,一旦出现问题,就是停在19:59:59和23:59:59,如果随机还好理解。TYR也未能捕捉到错误。
TRY
DO FORM YCCB2
READ EVENTS        
CATCH TO ex
        ex_info= "错误编号: "+ALLTRIM(STR(ex.ErrorNo))+CHR(10)+CHR(13)+;
        "    错误行号: "+ALLTRIM(STR(ex.LineNo))+CHR(10)+CHR(13)+;
        "    错误信息: "+ALLTRIM(ex.Message)+CHR(10)+CHR(13)+;
        "    错误函数: "+ALLTRIM(ex.Procedure)+CHR(10)+CHR(13)+;
        "    错误细节: "+ALLTRIM(ex.Details)+CHR(10)+CHR(13)+;
        "调用堆栈级别: "+ALLTRIM(STR(ex.StackLevel))+CHR(10)+CHR(13)+;
        "  代码行内容: "+ALLTRIM(ex.LineContents)
        StrToFile(ex_info, "d:\error_info.txt")
ENDTRY
2022-06-13 09:39
Pgwyg
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2022-6-10
得分:0 
按照7楼的思路创建了一个日志,只保留日志功能,删除TIMER事件中的其他过程
程序如下:
*Timer1控件interval=500
*Timer1控件Timer事件
*
当前时间=DATETIME()
*显示时间
this.Enabled=.f.
IF thisform.timexs.Caption!=TTOC(当前时间)
    更新时间显示
    thisform.timexs.Caption=TTOC(当前时间)
ENDIF
*整点(每60分钟)保存一次数据
IF MINUTE(当前时间)=0 AND sec(当前时间)=0
    INSERT INTO DATA\TEST_DATA (TIME_T) VALUES (当前时间)
    thisform.label1.CAPTION=TTOC(当前时间)+" 的数据已经保存! "   
ENDIF
this.Enabled=.t.
运行结果
第一天早上9点开始运行,每小时保存一次数据,日志上显示最后一条数据是19:00:00,但是thisform.label1.CAPTION显示20点、21点、22点、23点的数据已经保存,实际上数据并没有保存!
thisform.timexs.Caption控件最后显示为23:59:59,程序无响应,使用任务管理器强制退出。
问题出在那里?


[此贴子已经被作者于2022-6-14 09:05编辑过]

2022-06-14 09:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509305-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.164365 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved