• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

Environment.Tickcount 오버플로우 질문이에요

22.10.16 21:44 작성 조회수 461

0

public void Push(Action action, int tickAfter = 0)

{

JobTimerElem job;

job.execTick = System.Environment.TickCount + tickAfter;

job.action = action;

lock (_lock)

{

_pq.Push(job);

}

}

 

public void Flush()

{

while (true)

{

int now = System.Environment.TickCount;

JobTimerElem job;

lock (_lock)

{

if (_pq.Count == 0)

break;

job = _pq.Peek();

if (job.execTick > now)

break;

_pq.Pop();

}

job.action.Invoke();

}

}

만약 현재 TickCount가 int.maxvalue에 근사한 값이라면 job.execTick이 오버플로우가 일어나 현재 시간보다 무조건 낮기 때문에 바로 실행되는 문제가 있을 것 같습니다. 제 생각이 맞을까요?

답변 1

답변을 작성해보세요.

1

https://learn.microsoft.com/ko-kr/dotnet/api/system.environment.tickcount64?view=net-6.0

1~2주 이상 서버 내리지 않고 운영할 계획 등이라면 TickCount64를 사용하세요