Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
482 views
in Technique[技术] by (71.8m points)

c# - Timeout.InfiniteTimespan in .Net 4.0?

I actually do know that Timeout.InfiniteTimespan does not exist in .NET 4.0.

Noticed, there's also Timeout.Infinite which does exist in .NET 4.0

I am calling those two methods:

// the Change-Method
public bool Change(
    TimeSpan dueTime,
    TimeSpan period
)

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

in some cases, the dueTime Parameter needs to be infinite, which means the Event is not fired. I know I could simply use an other overload, but I feel like something has to be more simple.

I already tried using new TimeSpan(0, 0, -1) or new TimeSpan(-1) as dueTime. *But that throws an ArgumentOutOfRangeException pointing to the dueTime Parameter.

Is it somehow possible to create a literal working like the Timeout.InfiniteTimespan from .NET 4.5 ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

TimeOut.InfiniteTimeSpan in TimeOut class is defined as:

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

Where Timeout.Infinite is set to -1,so it is passing -1 value for milliseconds part.

You can do:

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...