我一直在阅读有关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!");
}
}
}
这将等待计时器完成一次,但如果您希望“无限”长时间运行计时器(直到按下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);
}
}
}