我有一个C#控制台应用程序。我想每分钟执行一次功能,最长可达1小时。该函数返回bool值。如果函数返回true,则计时器应该停止,否则它应该每分钟执行一次,最多1小时。 下面是我到目前为止编写的代码。
{{1}}
我认为我需要一些指导才能实现这一点。如果我能提供更多详细信息,请告诉我。
答案 0 :(得分:2)
只需调用timer.stop()即可停止计时器。内部调用timer.Enabled = false
使用另一个计时器在一小时后停止第一个计时器。
private static Timer timer;
private static Timer oneHourTimer;
static void Main(string[] args)
{
oneHourTimer = new System.Timers.Timer(3600 * 1000);
timer = new System.Timers.Timer(60 * 1000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(CheckEndProcessStatus);
oneHourTimer.Elapsed += oneHourTimer_Elapsed;
oneHourTimer.Start();
timer.Start();
}
static void oneHourTimer_Elapsed(object sender, ElapsedEventArgs e)
{
timer.Stop();
//maybe stop one hour timer as well here
oneHourTimer.Stop();
}
private static void CheckEndProcessStatus(object source, ElapsedEventArgs args)
{
try
{
if (CheckFunction())
{
//stop timer
timer.Stop();
}
}
catch (Exception ex)
{
throw;
}
}
private static bool CheckFunction()
{
bool check = false;
try
{
//some logic to set 'check' to true or false
}
catch (Exception ex)
{
throw;
}
return check;
}