提问者:小点点

DotNet-线程计时器未运行[重复]


我一直在阅读有关C#线程计时器的文章,并想在我的控制台应用程序中使用它。我创建了一个独立的项目,这样我就可以测试它,但我一直无法得到一个简单的计时器来运行。当我运行下面的代码时,我从控制台得到的只是hello world消息,但是我没有看到任何计时器输出。我把它改成将输出写到一个文件中,看看它是否只是在后台运行。然而,那也没有结果。我将使用dotnet(2.1)作为运行时,如果这与它有关的话。

有人看到下面的代码没有启动计时器的原因吗?

using System;
using System.Threading;

namespace ConsoleApp1
{
    class Program
    {
        static Timer _timer = null;
        static void Main(string[] args)
        {
            _timer = new Timer(x =>
            {
                Console.WriteLine("Timer is running");

            }, null, 1000, Timeout.Infinite);

            Console.WriteLine("Hello World!");
        }
    }
}

共1个答案

匿名用户

这将等待计时器完成一次,但如果您希望“无限”长时间运行计时器(直到按下enter键)我建议使用console.readline(),如上面@johnny Mopp所写

假设您仍然想使用timeout.infinite-创建一个布尔值,我们将在计时器完成后更新它。

bool TaskFinished = false;

然后运行一个while循环,在您想要等待的地方,直到计时器完成。

while(!TaskFinished);

示例:

using System;
using System.Threading;

namespace ConsoleApp1
{
    class Program
    {
        static Timer _timer = null;
        static void Main(string[] args)
        {
            bool TaskFinished = false;
            _timer = new Timer(x =>
            {
                Console.WriteLine("Timer is running");
                TaskFinished = true;

            }, null, 1000, Timeout.Infinite);

            Console.WriteLine("Hello World!");
            while(!TaskFinished);
        }
    }
}