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/

10-13 09:15