6

这是一个相当简单的问题,但每次我试图找到答案时,它都会不断显示有关 Windows 计划任务的信息,而这不是这个问题。

说我的程序基本上是这样的:

void StartDoingThings()
{
   //At Specific System.DateTime
   DoSomething()

   //At another specific System.Datetime
   DoSomethingElse()
}

我应该放什么而不是那些评论来导致这些方法在不同的日期时间运行。

我可以使用 Thread.Sleep() 甚至 System.Threading.Timers 并根据 (DateTimeOfEvent - DateTime.Now) 计算间隔,但是有什么话要说(假设程序仍在运行):9:30: 2012 年 11 月 30 日上午 00 点,执行 DoAnotherThing() 方法?

4

1 回答 1

4

如果你想“安排”一个方法在预定的时间做某事,有很多方法可以做到这一点。我不会使用Thread.Sleep(),因为这会占用一个什么都不做的线程,这是一种资源浪费。

一种常见的做法是使用一种定期唤醒的轮询方法(假设每分钟一次)并查看要执行的任务的共享列表。 System.Timer可用于轮询方法:

aTimer = new System.Timers.Timer(10000);
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

OnTimedEvent 方法可以包含维护要执行的“任务”集合的代码。当一个任务的时间到了,定时器的下一次运行将导致它执行。

于 2012-11-29T20:15:19.000 回答