我的问题更多的是关于到达同一目的地,但必须有另一种方式。现在我创建一个DateTime
并将其与另一个DateTime
进行比较并检查,如果我设置的时差可能是正确的。到目前为止一切都那么好,但我不能接受每次循环进入该代码时我都会创建一个新属性。
有没有办法到达同一个目的地,但是以某种更有效的方式?
我在这里给你们一些示例代码:
private void RunService()
{
// Runs as long as the service didn't got a stop call.
while (!SetStop)
{
//Get MinutesToWait
this.MinutesToWait = 5;
DateTime CheckRunTime = this.LastRun;
CheckRunTime.AddMinutes(this.MinutesToWait);
if (DateTime.Now >= CheckRunTime)
{
// Imagine some good and smart and totally runnable code?
}
}
}
答案 0 :(得分:0)
使用System.Timers
static void Main(string[] args) {
Timer T = new Timer();
T.Elapsed += Run;
T.Interval = 100;
T.Start();
}
static void Run(object source, ElapsedEventArgs e) {
}
答案 1 :(得分:0)
如果我理解正确,您想要做的是在服务启动后的某个时间执行一段代码。如果是这种情况,那么最好的办法就是使用timer。
首先,你必须将你想要等待的时间转换为毫秒。例如,5分钟等于300000ms。然后,您必须将要执行的代码移动到单独的方法。我将为此示例命名此方法RunCode()
。最后,您可以像这样创建计时器:
private void RunService()
{
var timer = new Timer(300000);
timer.Elapsed += (s, e) => this.RunCode();
timer.Start();
Thread.Sleep(Timeout.Infinite);
}
我们在这里做的是以下内容。
Elapsed
事件,该事件在指定时间过后触发如果你确定这个,延迟执行代码,就是你想要的,那么我提供的解决方案应该可以很好地工作。但是我担心这可能是一个XY problem,这意味着这是你想出的另一个可以更好地解决的问题的解决方案。所以我不得不问,为什么你在服务中需要这个呢?