我如何让DispatcherTimer将计时器设置为超过24天?

问题描述 投票:-1回答:1

我的代码使用System.Windows.Threading.DispatcherTimer设置计时器。

有一天,我发现自己试图设置一个比平时大的计时器,并且得到了ArgumentOutOfRangeException

System.ArgumentOutOfRangeException: TimeSpan period must be less than or equal to Int32.MaxValue.

但是,即使以.NET TimeSpan使用的100ns单位(“滴答”),我的价值(大约41天和15½小时,或3,598,196,944毫秒,或3.5981969e + 13个滴答声–诚然,很多滴答声)应该在64位整数范围内,这是文档声称TimeSpan在内部使用的(并且TimeSpan构造函数使用滴答声使用)。

由于TimeSpan为2,147,483,647,因此建议Int32.MaxValue仅支持持续时间将近25天。但是DispatcherTimer文档没有提及此限制。

我进行了一些测试,的确是:

DispatcherTimer

我是说,好的,我可以通过依次设置较短的延迟(例如,一次最多最多一天)来解决此问题,但如果可能的话,我想避免这种复杂性。

我的观察准确吗?如果是这样,有什么办法可以改变这种无证的行为?

[Windows 10(v1803),Visual Studio 2019(v16.4.5)、. NET 4.7.03056,x64构建]]]

我的代码使用System.Windows.Threading.DispatcherTimer设置计时器。有一天,我发现自己试图设置一个比平时更大的计时器,并且得到了ArgumentOutOfRangeException:System ....

.net c++-cli
1个回答
0
投票

当文档失败时,让我们看一下旧的源代码:

© www.soinside.com 2019 - 2024. All rights reserved.