C#两个Timer的应用问题

我在一个Timer1里添加了一个函数(因为需要时间控制运行):
Ceshixiangmumingcheng.Text = Program.mf.TestItems[i];
Ceshixinxiword1.Text = Program.mf.TestItems[i];
Ceshixiangmumingcheng.Visible = true;
Ceshixinxiword1.Visible = true;
CeshixinxiPicture1.Visible = true;
m=0;
Ceshixinxiword2.Text = Program.mf.TestItems[i];
Ceshixiangmumingcheng.Visible = true;
Ceshixinxiword2.Visible = true;
CeshixinxiPicture2.Visible = true;
m=1;
Ceshixinxiword3.Text = Program.mf.TestItems[i];
Ceshixiangmumingcheng.Visible = true;
Ceshixinxiword3.Visible = true;
CeshixinxiPicture3.Visible = true;
m=2;
Ceshixinxiword4.Text = Program.mf.TestItems[i];
Ceshixiangmumingcheng.Visible = true;
Ceshixinxiword4.Visible = true;
CeshixinxiPicture4.Visible = true;
m=3;
然后在第二个Timer2里添加:
private void timer2_Tick(object sender, EventArgs e)
{
switch (m)
{
case 0:
timer1.Interval = 1000;
break;
case 1:
timer1.Interval = 3000;
break;
case 2:
timer1.Interval = 4000;
break;
case 3:
timer1.Interval = 5000;
break;
}
timer2.Stop();
}
但是运行下来是直接一次显示所有,我分步运行看了,他是等Timer1运行完后才运行Timer2的延迟代码,请问我该如何编写才能让我代码里当走打m=一个数字的时候就去Timer2读取个延迟值并且执行呢?

你的两个Timer用的是System.Windows.Forms.Timer?
你试试
System.Timers.Timer

System.Threading.Timer
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-11
winform里的timer都是同步执行的,建议用Thread里的timer
第2个回答  2012-04-23
开始运行time1 timer2.stop() ,运行完Timer1 在调用Timer2.Start();
第3个回答  2012-04-11
timer 是单线程的 想同时运行 需要调用多线程

C#两个Timer的应用问题
你的两个Timer用的是System.Windows.Forms.Timer?你试试 System.Timers.Timer 或 System.Threading.Timer

C#中如何让两个timer控件同时运行,
Timer,其实是使用了线程的异步调用,既然线程,可以并发,那么Timer肯定是可以同时调用Start()的。

C# 两个timer的 调用
1:设置2个timer,互不干扰。2:在显示时间的timer里增加一个判断 定义一个private static int loops;在timer显示时间执行时loops++,if(loops==5){程序2;loops=0} 看起来还是第一个方法比较好一点。

C# Timer 运行后窗体卡住不动,等很久代码运行完之后才恢复
timer1.enable=false;\/\/一进事件将定时器停了,以防没执行完代码再次运行 application.doevents();\/\/ 在你比较耗资源的代码前面加这句话,将控制权交给系统,不用界面控制 timer1.enable=true;\/\/执行完操作,再启动 }

C#中怎样控制同一个界面中2个Timer控件的执行顺序
很简单。Time控件有一个Enable属性。设置其为True则调用,设置为False禁用。剩下的就没有什么难的了吧。。。

c#winform多个timer相互有影响吗
timer本身有个精度问题,所以不能指望你设1000它就是一秒,象timer3中你的显示什么的本身也会占用时间,这些综合起来你就不能再用scss=scss-1(或者写作scss--)这种,在表示倒计时的时候就应该用当前时间与起始时间的差值来计算,也就类似于如下 先在form2里加个变量 DateTime beginTime = DateTime.Now...

c# timer 时间问题
是的,你用的这个定时器不行。System.Windows.Forms.Timer 使用UI线程(主线程)计时,如果你窗体操作太多,定时器就会延时,误差很大。建议更换使用 System.Timers.Timer,它使用独立线程计时,受干扰更少、定时触发更精确。不过使用时要注意处理跨线程操作。C#共有三个Timer:System.Windows.Forms.Timer、...

C#用timer控件做循环周期的问题
你可以用数字来处理,如果不想用线程,可以用两个timer控件,或者一个timer控件,但是timer控件只用来计时, begin在按钮中运行 work在timer1_Tick中执行 比如这样 int looptime ;int delaytime ;int i_loop;int i_delay;bool waiting;PictureBox[] CurrentPic;private void begin(){ looptime =5;d...

C# timer如何使用?
1先从窗体工具箱里面将timer控件拖到窗体上,达到下面效果 2在timer1上点击右键属性 右边那个interval属性设置就是调节timer1时间间隔的,也可以在代码里面写timer1.Interval = 200;(200就是间隔时间 3 双击属性里面的控件事件里面的tick 然后在代码里面添加好按钮触发事件后添加代码如下 private void timer1...

C#怎么调用timer组件
当移动到一定位置后,Timer1启动,Timer2停止,如此反覆,这样窗体也就飘动起来了。要实现上述思路,必须解决好以下问题。(1).如何设定窗体的初始位置:设定窗体的初始位置,是在事件Form1_Load()中进行的。此事件是当窗体加载的时候触发的。Form有一个DesktopLocation属性,这个属性是设定窗体的左上角...

相似回答
大家正在搜