在一整天运行的程序上安排每日活动

时间:2014-05-15 18:26:22

标签: c# events timer scheduled-tasks

我正在编写一个C#WinForms程序,我想在后台24/7全天候运行。在XML文件中,我正在拉动时间。例如:下午3:30:00。当我在解析它之后显示这个时间时,它将在2014年1月15日下午3:30:00发布。

我的问题是,根据这个XML值,我怎样才能让它在每天下午3:30:00,一个Timer对象或其他东西显示一个消息框或其他一些动作?

2 个答案:

答案 0 :(得分:2)

您使用Timer的想法很好。您可以使用Winforms TimerSystem.Timers.Timer。在这种情况下,我将引用System.Timers.Timer,因为我有一些代码,我可以根据这个答案。

无论如何,只需指定一个Interval并通过Elapsed提供一个事件即可。然后在Elapsed调用的代码中,输入您的操作代码。最后,在需要的地方启动计时器并尝试运行它。

如果您使用DateTime来保存文件数据,那么您需要创建一个固定的毫秒数,直到第二天(不推荐),或者使用TimeSpan进行一些数学运算s(提示:使用构造函数来获取时间)。 TimeSpan包含一个名为' TotalMilliseconds'您可以将其用作Interval

我希望这能指出你正确的方向。

答案 1 :(得分:1)

这是一个控制台应用程序,每天在固定的时间执行作业

using System;
using System.Threading;

namespace ConsoleApplication1
{
    class Program
    {
        public static void Main()
        {
            Timer t = new Timer(TimerCallback, null, 0, 2000);
            // Wait for the user to hit <Enter>
            Console.ReadLine();
        }

        private static void TimerCallback(Object o)
        {
            Console.WriteLine("In TimerCallback: " + DateTime.Now);
            DateTime s = DateTime.Now;
            TimeSpan ts = new TimeSpan(23, 27, 0);
            s = s.Date + ts;
            if (DateTime.Now > s && !fired) 
            { 
                Console.WriteLine("Do the Job");
                fired = true;
            }
            else if (DateTime.Now < s)
            {
                fired = false;
            }
        }
        private static bool fired = false;
    }
}