每 1 秒使用秒表计时器与 DateTime 比较?

Using Stopwatch timer versus DateTime comparisons every 1 second?

假设我们有一个专用的 OS 线程,它必须每 4.30 分钟执行一次操作。

你不能挂起线程,因为它需要check/do其他东西,你也不能使用await/async,因为那会导致命令退出专用OS线程,违背了第一个创建线程的目的。

为了解决上述问题,我找到了 2 个解决方案:

第一种方法使用 Stopwatch。我认为 Stopwatch 使用线程来完成所有工作,这就是我想避免它的原因?

第二种方法使用了很多 DateTime 对象。每 1 秒我们就会构建一个当前日期的新 DateTime 对象。

这两个解决方案是等效的,除非您需要非常高的精度:Stopwatch 将使用高精度系统计时器(如果可用),如果不可用则回退到 DateTime。为了解决您的问题:

  1. Stopwatch 不使用单独的线程。它只是读取系统刻度(高精度或低精度)并为您做一些数学运算。

  2. DateTime 是一个结构,因此每秒创建一个新实例应该很便宜并且对 GC 施加零压力。

我会使用 Stopwatch,因为它可以免费提供经过的时间。 :)