我在主窗口中添加了几个timer和backgroundwork,一一对应,用timer去监控独立线程的执行。设定每个timer1分钟执行一次,为什么会被执行多次。代码如下:
private void sjsxjk_Tick(object sender, EventArgs e)
{
if (!SJSXJKbgw.IsBusy) //每次此独立进程还没执行完,isbusy属性仍然是 false,这是为何?
{
SJSXJKbgw.RunWorkerAsync();
}
}
private void SJSXJKbgw_DoWork(object sender, DoWorkEventArgs e)
{
functions.timeMonitor(DateTime.Now.ToString("yyyy-MM-dd HH:00:00"), true, false, false);
}
运行的时候,发现几个timer都会在1分钟内运行多次,这不科学啊,完全无视了timer.Interval属性设定啊,时间都跑哪去了?而且backgroundworker是isbusy属性怎么也全是false??哪位大神知道是怎么回事啊?
你有几个timer,你的timer设置的interval是60000么
timer本来就不准的。
timer控件用了多个,没有同步
用线程定时器,界面Timer不准的
我觉得是你那个判断isbusy属性有逻辑错误,实际上在判断的时候,对应的线程的时间片执行完了,应该是挂起状态,而不是busy
应该判断busy或suspend
界面Timer是不准的