Timeout.InfiniteTimespan 在 .Net 4.0 中?

Timeout.InfiniteTimespan in .Net 4.0?

我确实知道 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 参数的 ArgumentOutOfRangeException

是否有可能从 .NET 4.5 中创建类似于 Timeout.InfiniteTimespan 的文字?

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

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

所以,你可以这样做

TimeSpan infinite = TimeSpan.FromMilliseconds(-1);

TimeOut.InfiniteTimeSpanTimeOut class is defined 中:

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);