C# 延时处理或者暂停执行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 延时处理或者暂停执行相关的知识,希望对你有一定的参考价值。
在Timer_Tick事件中需要使此事件延迟或者暂停一下,比如
private void timer1_Tick(object sender,EventArgs e)
...........; // 执行代码
delay(second); //插入延时函数
...........;// 执行代码
求解这个delay(second)要怎么编写或者说是用一种什么样的方式来实现延时功能?
thread.sleep()是不可行的,因为这个time1_tick一直存在,用sleep()函数会导致死锁。望各位不惜赐教。
在timer1_Tick这个方法的第一句话加上timer1.Enabled = false;在结束时将其设置为true。这样应该可以保证Thread.Sleep的正常执行。
并且也要看一下timer的注意事项,如果设置间隔10秒,但在tick方法当中执行操作10秒,那么执行完成后,会立刻执行下次操作。 参考技术A 没用过C#,但方法都差不多吧,你可以创建一个事件delay这个事件的信号由另一个定时器置为,但前提前面用Application.DoEvents()允许执行其他事件,并且关闭Timer1,而本函数等delay事件有信号,有信号后则执行,并释放delay事件和定时器。。。。 参考技术B 新建一个timer,在delay以后执行,然后将延时之后执行的代码交由新的timer执行。
C#的闭包特性可以在一个函数内简介地做到这一点。
Timer t1 = new Timer(10000);
//实例化Timer类,设置间隔时间为10000毫秒;
t.Elapsed += (sender, e) =>
...........; // 执行代码
Timer t2 = new Timer(delayTime);
t2.Elapsed += (sender2, e2)=>
...........;// 执行延时代码
t2.AutoReset = false; // 只执行一次
t2.Enabled = true;
t.Enabled = true;
以上是关于C# 延时处理或者暂停执行的主要内容,如果未能解决你的问题,请参考以下文章