情景描述:功能:实现一个Timer定时器,隔一定时间调用函数A, 函数A的主要功能为:到数据中提取一些数据,形成表格,然后遍历表格,利用Web Service 发送到对方,并异步接收返回结果我实现的时候 发现一个问题,第一个定时期周期提取了数据,还没有发送完,第二个周期就开始了,又提取了一次数据,导致数据重复被提取执行。
我的问题是:如果在一个Timer周期内没有执行完毕, 怎样能保证第一次提取执行完毕后,然后再进行第二次周期执行。我的代码为:
timer = new System.Timers.Timer(4000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(StartWebServicePostFunction);
timer.AutoReset = true;
timer.Enabled = true;(StartWebServicePostFunction 为我处理的函数) 能解决问题的 赶快说一下, 是不是Timer有专门的属性可以控制?大家帮忙啊
我的问题是:如果在一个Timer周期内没有执行完毕, 怎样能保证第一次提取执行完毕后,然后再进行第二次周期执行。我的代码为:
timer = new System.Timers.Timer(4000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(StartWebServicePostFunction);
timer.AutoReset = true;
timer.Enabled = true;(StartWebServicePostFunction 为我处理的函数) 能解决问题的 赶快说一下, 是不是Timer有专门的属性可以控制?大家帮忙啊
所以防止多线程冲突就要用
Monitor
C#中直接用lock就可以了
在使用前判断线程是否在活动
(GetResultThread == null || !GetResultThread.IsAlive)