while(true)
{ get(num);//num的值是即时从外部获得的.
if(oldtime+2分钟==datetime.now)
totlal=total+num;
sleep(5000)
}
这样会产生问题,因为间隔是2分钟,这样会丢好多数据,最后的总值total也不对.
{ get(num);//num的值是即时从外部获得的.
if(oldtime+2分钟==datetime.now)
totlal=total+num;
sleep(5000)
}
这样会产生问题,因为间隔是2分钟,这样会丢好多数据,最后的总值total也不对.
{ get(num);//num的值是即时从外部获得的.
if(oldtime+2分钟==datetime.now)
totlal=total+num;
sleep(5000)
}
这样会产生问题,因为间隔是5分钟,这样会丢好多数据,最后的总值total也不对. 有时候会得不到oldtime+2分钟=datetime.now,给跨过去了.
貌似是5秒钟的间隔。
{
//真
}
但不管怎样,用Timer是不行的,Timer必须会使数据丢失。这里应该用Tread
如如果什么都不(ˇˍˇ) 想~落下
就不要if(oldtime+2分钟==datetime.now) sleep(5000)
DataTime判断不是很精确的,你应当判断一个范围,即小于多少时差就视为间隔两分钟,
这个跟浮点数比较大小是一样的,用==肯定不行
total += num如果用oldtime+2m==datetime.now sleep(5000)可行的几率很小
因为你的代码是每5s执行一次,如何算准在5s的某个倍数oldtime+2m==datetime.now??
声明全局变量 int dt;
timer里的Click事件里写:
dt++;
根据需要判断dt的值来执行方法
if(i==2) method1();
else if(i==3) method2();
else if(i==4) method3();
sleep(1000);
i++;
}
timer的调用事件(){
index++;
if(index==2){
method1();
}else if(index==3){
method2();
}else if(index==5){
method3();
}
}
int total=0;
private void Count()
{
get(num);//num的值是即时从外部获得的.
total = total + num;
}
private void mainvoid()
{
while(true)
{
ThreadStart ts = new ThreadStart(Count);
Thread t = new Thread(ts);
t.Start();
Thread.Sleep(120000) ;//比较精确的2分钟执行一次,get(num)的执行时间不超过2分钟就行了
}
}
两种方案:1、运用线程Thread,后台执行。[持久]
2、运用js,前提是此页面不要刷新了!