超时.. net 4.0中的InfiniteTimespan

本文关键字:中的 InfiniteTimespan net 超时 | 更新日期: 2023-09-27 17:49:49

我确实知道Timeout.InfiniteTimespan在。net 4.0中不存在。

注意,Timeout.Infinite也存在于。net 4.0

我调用了这两个方法:

// the Change-Method
public bool Change(
    TimeSpan dueTime,
    TimeSpan period
)
// the Constructor of Timer
public Timer(
    TimerCallback callback,
    Object state,
    TimeSpan dueTime,
    TimeSpan period
)

在某些情况下,dueTime参数需要是无限的,这意味着事件不被触发。我知道我可以简单地使用其他超载,但我觉得有些事情必须更简单。

我已经尝试使用new TimeSpan(0, 0, -1)new TimeSpan(-1)作为dueTime。*但是这会抛出一个指向dueTime参数的ArgumentOutOfRangeException

是否有可能创建一个像。net 4.5中的Timeout.InfiniteTimespan那样的文字?

超时.. net 4.0中的InfiniteTimespan

TimeOut.InfiniteTimeSpanTimeOut类中的定义为:

public static readonly TimeSpan InfiniteTimeSpan = new TimeSpan(0, 0, 0, 0, Timeout.Infinite);

其中Timeout.Infinite设置为-1 ,因此它传递的是 -1毫秒值部分。

你可以这样做:

TimeSpan InfiniteTimeSpan = new TimeSpan(0, 0, 0, 0, -1);

无限时间跨度是TimeSpan,毫秒设置为-1

所以你可以直接输入

TimeSpan infinite = TimeSpan.FromMilliseconds(-1);

如果您的模型支持"due"时间不存在的事件,那么将其设置为无穷大表示这似乎是错误的。为什么不让参数为空呢?