原因
造成这个问题的原因在于,在while循环之前的补冻结部分并没有进行补约定冻结,冻结是数据来源于freeze任务中的约定冻结。
遇到的问题
一开始没有找到对约定冻结进行标志置位的函数。后来找到函数但是没有把位置找全。第一次出现是在rateinit()函数里。
解决方案
将rateinit()函数中加入不需要新分钟到来就进行判断置位的函数,然后就对数据进行冻结。
反思
第一次解决的Bug,很简单但是找了一周,主要问题在于没找到所有对冻结标志置位的地方。从该程序设计里,学会了一种程序设计方法。可以在遇到条件时先对某个变量置位,在详细的处理程序里对标志位进行判断进行处理,不必把条件和处理程序放在一起。
judgeswitch→判断标志是否置位→如果是,对此时数据进行冻结forzedata→清标志位