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!");
}
}
}

这将等待计时器完成一次,但是如果您希望"无限"长时间运行计时器(直到按下回车键( 我建议使用 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);
}
}
}

最新更新