定期执行一个函数,如果返回true则停止

时间:2017-05-31 05:40:49

标签: c# .net

我有一个C#控制台应用程序。我想每分钟执行一次功能,最长可达1小时。该函数返回bool值。如果函数返回true,则计时器应该停止,否则它应该每分钟执行一次,最多1小时。 下面是我到目前为止编写的代码。

{{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;
    }