private static System.Timers.Timer timer0;timer0 = new System.Timers.Timer();
timer0.Interval = 1000*60*5;
timer0.Elapsed += new System.Timers.ElapsedEventHandler(ScheduledWorkCallback);
timer0.Start();
private void ScheduledWorkCallback(object sender, System.Timers.ElapsedEventArgs e)
{
//执行代码
}现在想知道每5分钟触发的ScheduledWorkCallback过程每次再次触发前检查上个过程是否已运行完,运行完再触发,否则就不触发,怎么办
timer0.Interval = 1000*60*5;
timer0.Elapsed += new System.Timers.ElapsedEventHandler(ScheduledWorkCallback);
timer0.Start();
private void ScheduledWorkCallback(object sender, System.Timers.ElapsedEventArgs e)
{
//执行代码
}现在想知道每5分钟触发的ScheduledWorkCallback过程每次再次触发前检查上个过程是否已运行完,运行完再触发,否则就不触发,怎么办
解决方案 »
- 求助,在线等,关于截取有效字符。
- [求助] 泛型集合的Remove方法无效。
- ◎◎◎◎◎◎◎◎IIS设置虚拟目录的方法?●●●●●●
- Javascript如何判断客户端是否安装了我的ActiveX,这里是个dsoframer.ocx控件,ms自己的
- dataset的简单问题
- asp.net form认证,在IE10中获取不到cookie
- 有没有带滚动条的datagrid?
- 注册成功后自动把注册信息发送到用户注册的邮箱里
- 请教一个手机缴费的问题,参与有分!!!
- 本人在做论坛时遇到点问题,请高手指教!
- 本地sqlserver2000数据库连接远程sqlserver2000数据库提示一般性网络错误
- 七夕~~~~~~~~~!女友不在身边,郁闷了哦~~~!!!!
{
timer0.Enabled=false;
//执行代码
timer0.Enabled=true;
}
private object m_SyncRoot = new object();private void ScheduledWorkCallback(object sender, System.Timers.ElapsedEventArgs e)
{
if(Monitor.TryEnter(m_SyncRoot))
{
//执行代码
}
}
用Monitor来同步
试图获取指定对象的排他锁。返回值
类型: System.Boolean
如果当前线程获取该锁,则为 true;否则为 false。如果成功,则此方法将获取 obj 参数上的排他锁。无论锁是否可用,此方法都会立即返回。
此方法类似于 Enter,但它永远不会阻止。如果在不阻止的情况下线程无法进入,则此方法返回 false,并且线程不会进入临界区。
http://msdn.microsoft.com/zh-cn/library/4tssbxcw.aspx