我想每1秒钟定期运行一次功能,所以在10秒后执行10次。 最简单的方法是使用这样的循环:
while(true)
{
Thread.Sleep(1000);
function();
}
但这种方法的主要问题是它不会提供任何定期保证。 我的意思是如果运行function()需要0.1秒,函数的执行时间将是这样的: 0,1.1,2.2,3.3,4.4,......
我记得,在实时语言ADA中,我们有一个函数sleep-until(#time)。现在我正在寻找C#的替代品。
将会使用任何示例代码。
答案 0 :(得分:5)
System.Threading.Timer timer = new System.Threading.Timer(ThreadFunc, null, 0, 1000);
private static void ThreadFunc(object state)
{
//Do work in here.
}
有关详细信息,请参阅MSDN。
答案 1 :(得分:3)
您可以使用Stopwatch
来衡量时间。我也会改用For-Loop
。
var sw = new System.Diagnostics.Stopwatch();
var timeForOne = TimeSpan.FromSeconds(1);
var count = 10;
for(int i = 0; i < count; i++)
{
sw.Restart();
function();
sw.Stop();
int rest = (timeForOne - sw.Elapsed).Milliseconds;
if (rest > 0)
System.Threading.Thread.Sleep(rest);
}
答案 2 :(得分:1)
要在特定时间间隔后调用某些内容,您应该使用Timer类。 这是Tutorial