我正在编写一个C#WinForms程序,我想在后台24/7全天候运行。在XML文件中,我正在拉动时间。例如:下午3:30:00。当我在解析它之后显示这个时间时,它将在2014年1月15日下午3:30:00发布。
我的问题是,根据这个XML值,我怎样才能让它在每天下午3:30:00,一个Timer对象或其他东西显示一个消息框或其他一些动作?
答案 0 :(得分:2)
您使用Timer
的想法很好。您可以使用Winforms
Timer
或System.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;
}
}