【发布时间】:2020-01-02 04:23:18
【问题描述】:
我一直在阅读有关 c# Threading Timer 的信息,并希望在我的控制台应用程序中使用它。我创建了一个独立项目,因此我可以对其进行测试,但我无法让一个简单的计时器运行。当我运行下面的代码时,我从控制台得到的只是 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()添加到Main的末尾。 -
您的计时器使用后台线程,后台线程不会阻止进程退出。只有前台线程会这样做,并且您唯一的前台线程会在使用
WriteLine()调用完成后立即退出。查看标记的重复项以了解各种技术,以使控制台程序运行足够长的时间以看到它做某事。
标签: c# multithreading .net-core timer