问题描述
我的代码如下。我只设置一个timer1数组,但执行出来却有两个结果。执行结果为[0]+当前时间,[1]+当前时间,我希望的结果为[0]+当前时间就可以了,后面[1]+当前时间是怎么来的?privatevoidstart_Click(objectsender,EventArgse){StartProcc();}///<summary>///启动程序///</summary>privatevoidStartProcc(){ArrayListurl=newArrayList();intcount=1;for(inti=0;i<count;i++){System.Timers.Timer[]timer=newSystem.Timers.Timer[count];timer[i]=newSystem.Timers.Timer();timer[i].Interval=1000;timer[i].AutoReset=false;timer[i].Elapsed+=delegate(objectsender,System.Timers.ElapsedEventArgse){Timers_Elapsed(sender,e,i);};timer[i].Start();System.Threading.Thread.Sleep(3000);}privatestaticvoidTimers_Elapsed(objectsender,System.Timers.ElapsedEventArgse,inttag){System.Timers.TimertheTimer=(System.Timers.Timer)sender;theTimer.Stop();stringnowtime=System.DateTime.Now.ToString("HH:mm:ss");MessageBox.Show("["+tag.ToString()+"]"+nowtime);
解决方案
解决方案二:
发现少了个},不知在哪
解决方案三:
呵呵,Timers_Elapsed方法少了一个“}”是我写少了,
解决方案四:
我运行了一下你的代码。并不是像你说的有两个。。就是只有一个timer的提示。。写的没错。。加个断点看看,是从哪里跳进来两次的。是不是在别的地方也引用了Elapsed
解决方案五:
我仔细看了下,如果timer[i].AutoReset=false;设为true的话。运行第二次,i会增加。在循环中,i<1可执行第二次Timers_Elapsed事件时,参数tag为1,然后报错,提示数组索引超出界限。