【发布时间】:2016-10-17 01:46:58
【问题描述】:
所以我有一个必须每 30 秒运行一次长达 2 小时的方法。
我的代码是:
private void btnJSON_Click(object sender, RoutedEventArgs e)
{
Task.Factory.StartNew(() =>
{
//Timing Logic
var geTimerDelay = 2;
Stopwatch s = new Stopwatch();
s.Start();
while (s.Elapsed < TimeSpan.FromHours(geTimerDelay))
{
Stopwatch s30 = new Stopwatch();
s30.Start();
while (s.Elapsed < TimeSpan.FromSeconds(30))
{
//Method To Run
}
s30.Stop();
}
s.Stop();
});
}
我做的是否正确(即达到上述时间间隔)还是有正确和/或更多时间精确的方法来做?
我需要知道,因为我从特定 url 访问数据,有时我得到空值,可能是由于访问过于频繁。
谢谢。
编辑:This 给了我一个不使用计时器的想法,没有具体原因。
【问题讨论】:
-
你可以使用定时器
-
为什么不简单地使用 Timer 类之一?
-
你可以使用 Thread.Sleep,但我并不是说它更好
-
这并不是所有代码都运行 30 秒。它只是一遍又一遍地运行了2个小时。请注意,一段时间后停止和等待一段时间后再次运行是两件不同的事情,但是您的两个
while循环基本相同。
标签: c#