System.Timers.Timer 可以锁定么?

明缘 2009-11-09 04:24:26
做一个windows service现在想每隔30分钟 自动轮询一下。
现在先做成一个WinForm的形式测试,由于执行的动作可能会很长时间不确定,
因此 想对Timer进行锁定,就是如果动作不执行完即使到了该执行的时刻,也不执行生成
新的Timer的动作,请问这样可以么?如果可以该怎么做。
...全文
112 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
明缘 2009-11-09
  • 打赏
  • 举报
回复
蒙了,谢谢各位。
powerchuangwai 2009-11-09
  • 打赏
  • 举报
回复
当你执行的动作结束时,启动计时器即可。
steal8275756 2009-11-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 shinnakoruru 的回复:]
推荐楼主用一个bool来标识当前是否有操作在进行
Timer的时间中首先判断这个bool,开始执行把它设置为true,执行完毕设置为false

2楼的方法应该是有问题的,timer.Enable的设置后计时从0开始,就达不到每30分钟执行的要求了
[/Quote]

bool completed = false;

private void YourMethod()
{
completed = false;
//do your things
completed = true;
}

private void Timer_Tick(object sender, EventArgs e)
{
if(completed)
{
//do what you want to do
}
}
hqbj08 2009-11-09
  • 打赏
  • 举报
回复
简单的来个while 里面最后加一个Thread.Sleep(30000)就行了
hqbj08 2009-11-09
  • 打赏
  • 举报
回复
Timer
里设置个判断就行了,例如分钟数等于0或30时进行启动,启动后Enable,完毕再设置false
明缘 2009-11-09
  • 打赏
  • 举报
回复
如何判断 当前是否有动作正在执行呢?不太懂啊,刚刚用这个东西。
ShinNakoruru 2009-11-09
  • 打赏
  • 举报
回复
推荐楼主用一个bool来标识当前是否有操作在进行
Timer的时间中首先判断这个bool,开始执行把它设置为true,执行完毕设置为false

2楼的方法应该是有问题的,timer.Enable的设置后计时从0开始,就达不到每30分钟执行的要求了
  • 打赏
  • 举报
回复
判断Timer.Enabled是否等于真不就行了吗?
CsToD 2009-11-09
  • 打赏
  • 举报
回复
Tick(..)
{
timer.Enabled=false;
//要执行的动作
timer.Enabled=true;
}
Hamsic 2009-11-09
  • 打赏
  • 举报
回复
用线程 也一样。。。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧