js的setinterval和settimeout非常方便。我想问一下如何在c_中实现同样的功能。
最佳答案
您可以在Task.Delay
中执行Task.Run
,尝试:
var task = Task.Run(async () => {
for(;;)
{
await Task.Delay(10000)
Console.WriteLine("Hello World after 10 seconds")
}
});
然后,您甚至可以将其打包到自己的setInterval方法中,该方法在一个操作中执行
class Program
{
static void Main(string[] args)
{
SetInterval(() => Console.WriteLine("Hello World"), TimeSpan.FromSeconds(2));
SetInterval(() => Console.WriteLine("Hello Stackoverflow"), TimeSpan.FromSeconds(4));
Thread.Sleep(TimeSpan.FromMinutes(1));
}
public static async Task SetInterval(Action action, TimeSpan timeout)
{
await Task.Delay(timeout).ConfigureAwait(false);
action();
SetInterval(action, timeout);
}
}
或者你可以使用内置的timer类
static void Main(string[] args)
{
var timer1 = new Timer(_ => Console.WriteLine("Hello World"), null, 0, 2000);
var timer2 = new Timer(_ => Console.WriteLine("Hello Stackoverflow"), null, 0, 4000);
Thread.Sleep(TimeSpan.FromMinutes(1));
}
只是要确保你的计时器不会超出范围而被处理掉。
关于c# - 如何在C#中实现setInterval(js),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41081305/