使线程等到第二天的时间

时间:2014-03-19 15:25:14

标签: c# multithreading c#-4.0 thread-safety

我有一个帖子,我希望它等到第二天的特定时间。 实现这一目标的最佳方式是什么?

我尝试了两种选择:

1

var restTime = DateTime.Today.AddDays(1).AddHours(hour).Subtract(DateTime.Now);
Thread.Sleep(restTime);

2

var restTime = DateTime.Today.AddDays(1).AddHours(hour).Subtract(DateTime.Now);
SpinWait.SpinUntil(() => false, restTime);

3 个答案:

答案 0 :(得分:3)

不要这样做。使用像Quartz.NET这样的库,并安排在特定日期和时间执行任务。创建一个线程没有意义,只是让它长时间不能正常工作。

答案 1 :(得分:1)

SpinWait是一个大不!使用spingwait,你的线程不会放弃它,并将继续消耗资源。

我会使用系统计时器,让它在比较的指定时间通知我的功能,然后再次检查

答案 2 :(得分:0)

我建议在这种情况下使用Timer。

var intervalTime= DateTime.Today.AddDays(1).AddHours(hour).Subtract(DateTime.Now);
Timer stateTimer = new Timer(
timerDelegate, autoEvent, delayTime, intervalTime);

http://msdn.microsoft.com/en-us/library/ah1h85ch%28v=vs.100%29.aspx