Timeout.InfiniteTimespan в.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) как должное. * Но это бросает ArgumentOutOfRangeException указывая на dueTime Параметр.

Можно ли как-то создать буквальную работу, подобную Timeout.InfiniteTimespan из.NET 4.5?

3 ответа

Решение

TimeOut.InfiniteTimeSpan в TimeOut класс определяется как:

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

Если ваша модель поддерживает события, в которых "ожидаемое" время не существует, установите его в бесконечность, чтобы указать, что это кажется неправильным. Почему бы не сделать параметр обнуляемым?

Другие вопросы по тегам