我一直在阅读有关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!");
}
}
}
答案 0 :(得分:0)
这将等待计时器一次完成,如果您希望“无限”长地运行计时器(直到按下回车键),我建议使用Console.ReadLine(),如上面的@Johnny Mopp所述< / strong>
假设您仍然想使用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);
}
}
}