【问题标题】:Using many timers may cause application crash?使用多个计时器可能会导致应用程序崩溃?
【发布时间】:2013-10-17 01:22:57
【问题描述】:

我有一个应用程序,我有 6 个计时器。每个定时器都有不同的时间间隔,分别表示 1s、1s、3s、3s、3s、3s。要求 CPU 始终是 2% 到 3%。 由于我的 PC 的能力,在我的 PC 中很好。

如果PC的能力低,我相信它可能会导致应用程序。

有没有什么有效的方法来使用定时器?或其他运行背景? 原因,我使用计时器是因为这个计时器会在用户添加或编辑或删除产品记录时查询数据库(获取总金额),而不仅仅是产品记录任何记录。

Timer 1s 用于显示日期和时间标签 定时器1s是和datagriview交互,更新整列 而其他定时器则是从 MySql Server 获取数据。据我估计,最大记录数可以是 10 条记录。

谢谢

【问题讨论】:

  • 许多计时器本身会导致应用程序崩溃吗?不会。您的应用程序会崩溃吗?如果是这样,错误是什么,那应该告诉您问题所在。一个问题是,如果您的 1s 计时器查询数据库并且查询时间超过一秒,那么您是否有适当的逻辑来处理它(如果需要)
  • 只有3s定时器,会查询数据库。 (不提这个)。就目前而言,它还没有崩溃,但我认为它可能会崩溃或工作非常缓慢。
  • 您能描述一下这些计时器正在运行什么进程吗?如果它在做某种报告,你可能不需要那么频繁地更新它。
  • 只运行少量计时器不会使您的应用程序崩溃,但每 3 秒运行一次的长时间运行查询可能会在速度较慢的机器上或网络数据库设置不佳时出现性能问题。如果它确实崩溃了,它不是定时器,而是定时器事件中代码的实现。也许为数据库设置一个 nive DAL 将是一个更好的选择,你可以使用数据库触发器或 StateChanges 来更新 UI。
  • 如果查询花费的时间超过计时器 interval 会发生什么?你再运行一次吗?

标签: c# timer


【解决方案1】:

不清楚为什么您认为在这里需要多个计时器,而且您甚至没有说明您使用的是哪个计时器实现 - 它可能会有所作为。

使用以合理的最小精度(1 秒、100 毫秒等)触发的单个计时器将减少总体开销,并可能更好地满足您的目的。当然,这是在没有任何迹象表明您实际尝试实现的目标的情况下说的。

【讨论】:

    【解决方案2】:

    听起来好像您可能有多个问题,但要回答您的问题,运行多个计时器不会导致您的应用程序崩溃。如何实现计时器以及是否锁定在触发时间时调用的代码块很重要。如果您允许在代码块完成执行先前调用之前执行代码块,则可能会导致您的应用程序变得不稳定。您应该查看计时器甚至线程。如果不知道更多关于你在做什么,很难为你的问题提供一个更明确的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多