【问题标题】:Does 'timer' take more CPU power?“计时器”是否占用更多 CPU 资源?
【发布时间】:2011-12-15 06:08:15
【问题描述】:

我使用过计时器,发现它在几秒或几毫秒内做出决定时非常有用。 现在我有强烈的感觉,定时器的持续运行会逐渐增加处理器周期的消耗。

我创建了一个应用程序 (C#) 并使用“计时器滴答”每 1000 毫秒(1 秒)执行“三个”指令,我注意到 5 分钟后应用程序消耗了 5% 的 CPU 功率和 10% 之后10 分钟。

如果这个进度保持不变,那么如果我在后台运行我的应用程序,4-5 小时后会发生什么?

我应该避免过度使用计时器吗?

private void currentTime_Tick(object sender, EventArgs e)
{
   label1.Text = DateTime.Now.ToString("HH:mm:ss tt");
   label2.Text = dt.AddSeconds(i).ToString("HH:mm:ss");
   i++;
}

【问题讨论】:

  • 我不认为,我与定时器的使用有关。 你的代码中一定有东西
  • 你确定是定时器而不是其他代码吗?也许是未清理的引用或持有越来越多数据的对象?
  • 如果您可以向我们展示您的代码,我们可以分析发生了什么。有 3 种计时器,它们的行为都略有不同 :-) 这和你在事件处理程序中所做的任何事情都会产生很大的不同。
  • 你可以多描述一下你在做什么。
  • 这不是负责你的 CPU 使用的代码。

标签: c# timer cpu-usage


【解决方案1】:

在我看来,原因不是计时器本身,而是它调用的任何指令。你是按照你的指令创建对象,还是调用在单独线程中运行的东西?启动线程或分配资源,而忘记关闭它们肯定会导致您描述的行为。

【讨论】:

  • 在前两条指令中,我更改了两个“标签”的“文本”,第三条指令增加了一个“双”值。
  • 除非其中一些标签有一些 onChanged() 或类似事件处于活动状态,否则问题不应该出现在这部分代码中。您是否尝试隔离问题?当您注释掉“计时器滴答”中的所有内容时会发生什么?如果您将计时器间隔设置为慢 10 倍,或者根本不启动它会发生什么?
猜你喜欢
  • 2022-11-23
  • 2011-02-12
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-25
  • 2011-12-12
  • 1970-01-01
相关资源
最近更新 更多