web-dev-qa-db-ja.com

.Net 4.0のTimeout.InfiniteTimespan?

_Timeout.InfiniteTimespan_が.NET4.0に存在しないことを実際に知っています。

.NET 4.0に存在する_Timeout.Infinite_もあります。

私はこれらの2つのメソッドを呼び出しています:

_// 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パラメータを指すdueTimeがスローされます。

。NET 4.5の_Timeout.InfiniteTimespan_のように機能するリテラルを作成することはどういうわけか可能ですか?

15
LuckyLikey

TimeOut.InfiniteTimeSpan in 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);
23
Habib

無限のタイムスパンは、ミリ秒が-1に設定されたTimeSpanに他なりません。

だから、あなたはただすることができます

TimeSpan infinite = TimeSpan.FromMilliseconds(-1);
15

モデルが「期限」時間が存在しないイベントをサポートしている場合は、それを無限大に設定して、それが間違っているように見えることを示します。パラメータをnull許容にしないのはなぜですか?

0
matt