【问题标题】:Running a function every 2 seconds每 2 秒运行一次函数
【发布时间】:2012-01-09 17:30:51
【问题描述】:
    public void InitTimer()
    {
        timer1 = new Timer();
        timer1.Tick += new EventHandler(timer1_Tick);
        timer1.Interval = 200; // in milliseconds
        timer1.Start();
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
        MessageBox.Show("test");
    }

使用来自How can I raise an event every hour (or specific time interval each hour) in .NET?的代码

我对 C# 非常陌生,但我不确定出了什么问题。我试图在此示例中每 2 秒显示一个消息框。没有错误,消息框根本不显示。

【问题讨论】:

  • 200 毫秒!= 2 秒。
  • 您遇到的实际问题是什么?你得到一个错误,或者代码根本没有被调用?
  • 2 秒是 2000 毫秒,而不是 200
  • 你确定你打电话给InitTimer()
  • 如果 timer1_Tick 函数需要 1 分钟才能完成怎么办?

标签: c# function timer


【解决方案1】:

您忘记在负载中调用该函数。

【讨论】:

  • 谢谢,这行得通,我没有在负载中调用函数,DOH!
  • 我不会创建这样的“睡眠函数”,因为 auf 死/睡眠线程会浪费资源......
  • 需要 15 个代表,否则我会:P
  • 如果它在 UI 线程上休眠,这是个坏主意——这将阻止处理 Windows 消息...
  • @Boas Enkler 你是对的。这是一个简单的例子,仍然不应该使用它。
【解决方案2】:

我试用了您的代码(将 200 毫秒更改为 2000 毫秒),它确实每 2 秒显示一次消息框,所以问题不在于代码,而更有可能是您调用它的方式.我刚刚创建了一个示例 Winforms 应用程序,并将对 InitTimer 的调用放在表单的 Load 事件中:

    private void Form1_Load(object sender, EventArgs e)
    {
        InitTimer();
    }

当您创建项目时,您是否创建了 Windows 窗体应用程序?例如,您不应该创建控制台应用程序。

【讨论】:

  • 这是真的,我没有调用 InitTime();谢谢!
【解决方案3】:
        Timer timer1 = new Timer();
        timer1.Tick += new EventHandler(timer1_Tick);
        timer1.Interval = 2000; // in miliseconds
        timer1.Start();

你需要在 timer1 之前放置一个额外的 Timer 这可行,但请确保您启动计时器

【讨论】:

    【解决方案4】:

    只需将计时器的间隔设置为您需要的值即可。

    200 表示 200 毫秒

    所以 Interval = 2000 表示每两秒触发一次代码

    但是你的问题在哪里?什么不起作用? 还有一些关于 ui 和非 ui 线程的问题。

    【讨论】:

    • 为 MessageBox 调用设置断点并查看它是否被引发。
    【解决方案5】:

    一小时有 60 分钟,一分钟有 60 秒,一秒有 1000 毫秒,所以你可以有

    timer1.Interval = 60 * 60 * 1000; // Every hour
    

    【讨论】:

    • 你可能误读了这个问题,他希望每 2 秒一次,而不是每小时一次
    【解决方案6】:

    如果您想避免锁定线程,您可以随时生成一个新线程并在那里继续轮询。使用相同的代码,但

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 2020-06-09
      相关资源
      最近更新 更多