我用C# 写了个WindowsService 中间用到个Timer控件来控制多长时间重复执行某些事件。

现在有个问题:比方说第一次执行还没执行完就开始执行第二次了。我现在想问下Timer控件可以设置成执行完成一次后多少秒再开始执行吗?而不是现在是每隔多少秒就开始执行。谢谢大... 现在有个问题:
比方说第一次执行还没执行完就开始执行第二次了。
我现在想问下Timer控件可以设置成执行完成一次后多少秒再开始执行吗?而不是现在是每隔多少秒就开始执行。谢谢大大们了。。
我自己已经解决,谢谢大家。
在Timer 的 Elapsed 事件中
可以使用 Timer.Enabled = false 来先结束Timer的计时 等实行完成后再Timer.Enabled = true

timer_Elapsed()
{
Timer.Enabled = false;
// 执行任务操作.
Timer.Enabled = true;
}
展开
 我来答
左安坤
2011-08-08 · TA获得超过852个赞
知道小有建树答主
回答量:1704
采纳率:0%
帮助的人:911万
展开全部
给你一个思路:

设置一个变量,bool isOpen = true;
假如每隔5秒WindowsService执行,在执行时就判断变量是否为true,如:
WindowsService.method(){
if (isOpen){
isOpen = false;
此处调用你将要执行的任务,但此调用需要返回一个值
}
}
返回一个true值重新设置isOpen这个值,因为在执行时我们将这个值设为了false,所以下次轮回的时候,如果此值不为true,则调用不执行

我给你写一个模拟程序,以供参考,因为我不知道你的代码是怎么写的,所以我就只写一个小例子

public class Test{
bool isOpen = true;

public void WindowsServiceRun() //每隔五秒WindowsService会自身调用
{
if(isOpen){
isOpen = this.DoWork();
}
}

public bool DoWork()
{
//do somethin;
try{
//如果任务顺利执行,则返回true;
return true;
}catch(Exception e){
//出现了异常,则返回false;
return false;
}
}
}
--------------------------------
以上代码是整个思路的示例,以供参考
apu510064
2011-08-08 · TA获得超过964个赞
知道小有建树答主
回答量:1634
采纳率:55%
帮助的人:928万
展开全部
用两个Timer,如Timer1和Timer2,Timer1控制程序代码执行,Timer2控制Timer1
代码大致如下,Timer1的Tick事件
Timer1.Enabled=false;
Timer2.Enabled=false;
//执行任务代码
//任务代码执行完毕
Timer2.Enabled=true;

Timer2的Tick事件:
Timer1.Enable=true;
设置好两个Timer的时间周期就可以了
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
goodwill_007
2011-08-08 · 超过17用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:14.3万
展开全部
你看看Timer有没有WaitForExit()函数。
估计你这里要用Stopwatch
//开始运行
sw = new System.Diagnostics.Stopwatch();
sw.Start();
。。。。。
Console.WriteLine("已运行:" + sw.Elapsed.Days.ToString() + "天" + sw.Elapsed.Hours.ToString() + "小时" + sw.Elapsed.Minutes.ToString() + "分" + sw.Elapsed.Seconds.ToString() + "秒");
。。。。。
sw.Stop();
使用sw手动计算时间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
廖彧
2021-03-06 · 超过27用户采纳过TA的回答
知道答主
回答量:191
采纳率:0%
帮助的人:75.4万
展开全部
好棒,下次自己也多研究下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun19864010
2011-08-08
知道答主
回答量:37
采纳率:0%
帮助的人:47.5万
展开全部
学习
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式