我想知道System.Timers中Timer类的精度是多少,因为它是一个double类型(这似乎表明可以有毫秒的分数)。它是多少?
几年前我发现它的精度大约为16毫秒……但不幸的是我不记得细节了。
System.Timers.Timer比较奇怪。它使用double类型作为间隔参数,但实际上会调用Math.Ceiling函数将其转换为int类型,并将结果用于底层的System.Threading.Timer。因此,它的理论精度是1毫秒,而且你不能指定超过2,147,483,647毫秒的间隔。鉴于这些信息,我真的不知道为什么要使用double作为间隔参数。
你可以通过执行一个循环来轻松地自行发现这一点,该循环不断采样结果时间持续时间并检查它的步长粒度。