C# 在全天运行的程序上安排每日事件

C# 在全天运行的程序上安排每日事件,c#,events,timer,scheduled-tasks,C#,Events,Timer,Scheduled Tasks,我正在编写一个C#WinForms程序,希望它能在后台全天候运行。在一个XML文件中,我正在抽时间。例如:下午3:30:00。当我在解析后显示这一次时,它显示为2014年1月15日下午3:30:00 我的问题是,基于这个XML值,我怎样才能使它在每天下午3:30:00时,计时器对象或某物显示消息框或其他操作?您使用计时器的想法很好。您可以使用WinformsTimer或System.Timers.Timer。在本例中,我将参考System.Timers.Timer,因为我有一些代码可以作为这个答

我正在编写一个C#WinForms程序,希望它能在后台全天候运行。在一个XML文件中,我正在抽时间。例如:下午3:30:00。当我在解析后显示这一次时,它显示为2014年1月15日下午3:30:00


我的问题是,基于这个XML值,我怎样才能使它在每天下午3:30:00时,计时器对象或某物显示消息框或其他操作?

您使用
计时器的想法很好。您可以使用
Winforms
Timer
System.Timers.Timer
。在本例中,我将参考
System.Timers.Timer
,因为我有一些代码可以作为这个答案的基础

无论如何,只需给它分配一个
间隔
,并通过
经过时间
触发一个事件即可。然后在
经过的
调用的代码中,输入操作代码。最后,在需要的地方启动计时器并尝试运行它

如果使用
DateTime
保存文件数据,则需要创建一个到第二天的恒定毫秒数(不推荐),或者使用
TimeSpan
s进行一些计算(提示:使用构造函数获取时间)。
TimeSpan
包含一个名为“totalmillizes”的属性,您可以将该属性用作
间隔


我希望这为您指明了正确的方向。

您使用
定时器的想法很好。您可以使用
Winforms
Timer
System.Timers.Timer
。在本例中,我将参考
System.Timers.Timer
,因为我有一些代码可以作为这个答案的基础

无论如何,只需给它分配一个
间隔
,并通过
经过时间
触发一个事件即可。然后在
经过的
调用的代码中,输入操作代码。最后,在需要的地方启动计时器并尝试运行它

如果使用
DateTime
保存文件数据,则需要创建一个到第二天的恒定毫秒数(不推荐),或者使用
TimeSpan
s进行一些计算(提示:使用构造函数获取时间)。
TimeSpan
包含一个名为“totalmillizes”的属性,您可以将该属性用作
间隔


我希望这为您指明了正确的方向。

您使用
定时器的想法很好。您可以使用
Winforms
Timer
System.Timers.Timer
。在本例中,我将参考
System.Timers.Timer
,因为我有一些代码可以作为这个答案的基础

无论如何,只需给它分配一个
间隔
,并通过
经过时间
触发一个事件即可。然后在
经过的
调用的代码中,输入操作代码。最后,在需要的地方启动计时器并尝试运行它

如果使用
DateTime
保存文件数据,则需要创建一个到第二天的恒定毫秒数(不推荐),或者使用
TimeSpan
s进行一些计算(提示:使用构造函数获取时间)。
TimeSpan
包含一个名为“totalmillizes”的属性,您可以将该属性用作
间隔


我希望这为您指明了正确的方向。

您使用
定时器的想法很好。您可以使用
Winforms
Timer
System.Timers.Timer
。在本例中,我将参考
System.Timers.Timer
,因为我有一些代码可以作为这个答案的基础

无论如何,只需给它分配一个
间隔
,并通过
经过时间
触发一个事件即可。然后在
经过的
调用的代码中,输入操作代码。最后,在需要的地方启动计时器并尝试运行它

如果使用
DateTime
保存文件数据,则需要创建一个到第二天的恒定毫秒数(不推荐),或者使用
TimeSpan
s进行一些计算(提示:使用构造函数获取时间)。
TimeSpan
包含一个名为“totalmillizes”的属性,您可以将该属性用作
间隔


我希望这为您指明了正确的方向。

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

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;
    }
}
使用系统;
使用系统线程;
命名空间控制台应用程序1
{
班级计划
{
公共静态void Main()
{
计时器t=新计时器(TimerCallback,null,0,2000);
//等待用户点击
Console.ReadLine();
}
专用静态void TimerCallback(对象o)
{
WriteLine(“In-TimerCallback:+DateTime.Now”);
DateTime s=DateTime.Now;
TimeSpan ts=新的TimeSpan(23,27,0);
s=s.日期+ts;
如果(DateTime.Now>s&!已激发)
{ 
Console.WriteLine(“完成任务”);
激发=真;
}
else if(DateTime.Now
这是一个控制台应用程序,每天在固定时间执行作业

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;
    }
}
使用系统;
使用系统线程;
命名空间控制台应用程序1
{
班级计划
{
公共静态void Main()
{
计时器t=新计时器(TimerCallback,null,0,2000);
//等待用户点击
Console.ReadLine();
}
专用静态void TimerCallback(对象o)
{
WriteLine(“In-TimerCallback:+DateTime.Now”);
DateTime s=DateTime.Now;
TimeSpan ts=新的TimeSpan(23,27,0);
s=s.日期+ts;
如果(DateTime.Now>s&!已激发)
{ 
Console.WriteLine(“完成任务”);