我正在尝试使用 C# 中的计时器以五秒的间隔运行一个方法。虽然这段代码似乎不起作用。运行它时我没有收到任何错误,但程序(我在控制台中运行)在 IP.timer1.Start()
之后立即关闭。 timer1_Elapsed 方法永远不会被执行。我知道这一点,因为我已经尝试让程序在 timer1_Elapsed 方法的第一行向控制台打印一个字符串。
class Program
{
Timer timer1 = new Timer();
static void Main(string[] args)
{
Program IP = new Program();
IP.timer1.Elapsed += new ElapsedEventHandler(timer1_Elapsed);
IP.timer1.Interval = 5000;
IP.timer1.Enabled = true;
IP.timer1.Start();
}
static void timer1_Elapsed(object sender, ElapsedEventArgs e)
{
//Function to get executed each time the counter elapses.
}
}
最佳答案
原因是定时器的Start
方法在另一个线程上启动了定时器,并立即从该方法返回。这会导致您的 Main
方法结束,并且控制台关闭。
根据您使用的Timer
(BCL 中有一些类似命名的类),您可能希望以不同方式实现修复。我建议阅读有关 System.Timers.Timer 的文档, System.Windows.Forms.Timer或 System.Threading.Timer取决于您使用的是哪个。
关于C# timers.timer 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098373/