2009/01/02(Fri) 00:30:45 編集(投稿者)
System.Environment.TickCount って uint じゃないんだ。。。サイテ〜!
Environment.TickCount プロパティ
http://msdn.microsoft.com/ja-jp/library/system.environment.tickcount.aspx
> プロパティ値
> 型 : System.Int32
> コンピュータが最後に起動してからの経過時間をミリ秒単位で保持している
> 32 ビット符号付き整数。
>
> このプロパティの値はシステム タイマから取得され、
> 32 ビット符号付き整数として格納されます。
> そのため、システムを終了せずに実行し続けた場合、TickCount はゼロから
> Int32.MaxValue (約 24.9 日) までインクリメントされた後、
> いったん Int32.MinValue (負数) になり、再び、ゼロに戻ってから、
> 次の 24.9 日までインクリメントされます。
ということで、こういった coding が必要でしょう。
Boolean IsTimeouted(int now, int start, int term)
{
Boolean timeouted = false;
if (now < 0 && start >= 0)
{
if (term <= (now + int.MaxValue + 1 - start + int.MaxValue + 1))
{
timeouted = true;
}
}
else
{
if (term <= (now - start))
{
timeouted = true;
}
}
return timeouted;
}