【问题标题】:StopWatch vs Timer - When to Use秒表与计时器 - 何时使用
【发布时间】:2015-09-26 09:21:39
【问题描述】:

请原谅我这个问题,但我似乎无法找到何时使用 which 的好来源。如果你能用简单的术语解释它会很高兴。

此外,我正面临这样的困境:

看,我正在编写一个简单的应用程序。我希望它显示经过的时间(hh:mm:ss 格式或其他格式)。而且,能够“加快”或“减慢”它的时间间隔(即加速,以便实时一分钟等于应用程序中的一小时)。

例如,在 Youtube 视频中(* 不考虑我们可以跳转到视频的特定部分 *),我们在左下角看到观看该视频所花费的实际时间屏幕的一角,但通过在选项菜单中导航,我们可以加快或减慢视频的速度。

我们实际上可以看到时间以与速度因子一致的方式更新(例如,如果您选择两倍的速度,下面的计时器会比正常速度快两倍),您可以更改此速度随时随地。

这就是我所追求的。类似于 Youtube 视频如何测量经过的时间以及它们可以更改时间间隔的事实。那么,你认为我应该选择哪两个?计时器还是秒表?

顺便说一句,我只是在编写一个 Windows 窗体应用程序。我正在模拟一些东西,我希望用户能够在他或她希望的任何时候加速。尽管这可能很简单,但我希望实施一种适当的方法。

【问题讨论】:

  • 计时器无法测量经过的时间,它只足以让标签更新。使用 Environment.TickCount、DateTime.UtcNow 或秒表。前两个在长时间内非常准确,后者在短期内很好。
  • @HansPassant:+1,我总是使用秒表,因为正是你提出的观点。

标签: c# time timer intervals stopwatch


【解决方案1】:

据我所知,主要区别是:

定时器

  1. Timer 只是一个简单的调度器,它偶尔会运行一些操作/方法
  2. 它在单独的线程中执行方法。这样可以防止阻塞主线程

当我们需要在一定的时间间隔内执行一些任务而不阻塞任何东西时,定时器是很好的。

秒表

  1. 秒表默认在同一个线程上运行
  2. 它计算时间并返回 TimeSpan 结构,在我们需要一些额外信息时很有用

当我们需要查看时间并获取有关该方法花费多少经过的处理器滴答等其他信息时,秒表是很好的选择。

【讨论】:

    【解决方案2】:

    这已在许多其他问题中涉及,包括 here。基本上,您可以使用带有速度因子的秒表,然后结果就是您的“经过时间”。更复杂的方法是实现Timerand changing the Interval property

    【讨论】:

    • 如果已经被问过很多次了,你不应该回答,等待别人关闭...
    • 我加了一个近距离投票,顺便说一句,你应该知道你的“答案”应该是评论......
    • 感谢@MatíasFidemraizer 的提醒......我仍然无法投票结束问题,所以你说得对,我应该发表评论。
    • 再想一想,我认为该页面没有向我充分解释何时使用哪个。 :/ 另外,在我写这篇评论的时候,这个问题刚刚提出了大约 12 分钟。我正在查看链接的其他页面。那么,如果您认为有必要,我深表歉意。 ://
    • @SpaceSteak 没问题,我自己添加了近距离投票;)
    猜你喜欢
    • 2021-01-04
    • 1970-01-01
    • 2015-06-12
    • 2015-10-20
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2012-12-09
    相关资源
    最近更新 更多