我想在特定时间调用 C# 应用程序上的特定函数。起初我考虑使用Timer
(System.Time.Timer)
,但很快就变得无法使用。为什么?
简单的。 Timer 类需要一个Interval
以毫秒为单位,但考虑到我可能希望执行该函数,假设在一周内,这意味着:
- 7天=168小时;
- 168 小时 = 10,080 分钟;
- 10,080 分钟 = 604,800 秒;
- 604,800 秒 = 604,800,000 毫秒;
- 所以间隔是 604,800,000;
现在让我们记住Interval
接受的数据类型是int
,据我们所知int
范围从 -2,147,483,648 到 2,147,483,647。
这使得Timer
没有用,不是在这种情况下,而是在超过大约25天的情况下,一旦我们无法设置Interval
大于 2,147,483,647 毫秒。
所以我需要一个可以指定何时调用该函数的解决方案。像这样的事情:
solution.ExecuteAt = "30-04-2010 15:10:00";
solution.Function = "functionName";
solution.Start();
因此,当系统时间达到“30-04-2010 15:10:00”时,该函数将在应用程序中执行。
如何解决这个问题呢?
附加信息:这些功能将做什么?
- 获取气候信息并基于该信息:
- 启动/关闭其他应用程序(大多数基于控制台);
- 向这些控制台应用程序发送自定义命令;
- 电脑断电、重启、睡眠、休眠;
- 如果可能的话,安排 BIOS 来启动计算机;
EDIT:
看来Interval
接受的数据类型是double
,但是如果您设置的值大于int
to the Interval
,并致电Start()
它抛出一个异常[0, Int32.MaxValue]
.
EDIT 2:
Jørn Schou-Rode 建议使用Ncron http://code.google.com/p/ncron/处理调度任务,乍一看这似乎是一个很好的解决方案,但我想听听一些使用过它的人的情况。