C# timers.timer 不能正常工作

标签 c# timer intervals

我正在尝试使用 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.TimerSystem.Threading.Timer取决于您使用的是哪个。

关于C# timers.timer 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098373/

相关文章:

node.js - 销毁指令中的 $interval

c# - 对 dbpedia 端点执行 sparql 查询

java - 在android中终止定时器

swift - 每 2 秒将变量发送到另一个函数

java - Bukkit - 无法启动 runTaskTimerAsynchronously();

javascript - 从 javascript 调用 webservice 并等待响应

C# 全局键盘钩子(Hook),从控制台应用程序打开一个表单

c# - P/调用第三方弹窗

c# - 为什么 Windows 7 无法加载程序集 PresentationFramework.Aero2?

Oracle 将天到秒的间隔与整数进行比较