LastInput.time является целым числом, а m_idleTime также является целым числом. Эта строка иногда генерирует исключение переполнения, я думаю, что это происходит, когда оба значения большие отрицательные значения.
(Environment.TickCount - lastInput.time) > m_idleTime
Как мне этого избежать? С литья?
(CType(Environment.TickCount,Long) - CType(lastInput.time,Long)) > m_idleTime
Или, может быть, с этим составом?
CType((Environment.TickCount - lastInput.time),Long) > m_idleTime
Заранее спасибо.
РЕДАКТИРОВАТЬ: я использую метод GetLastInputInfo, чтобы проверить, сколько раз компьютер простаивал. Я объявил возвращаемое значение из вызова следующим образом:
<StructLayout(LayoutKind.Sequential)> Public Structure StructLastInputInfo
<MarshalAs(UnmanagedType.U4)> Dim size As Integer
<MarshalAs(UnmanagedType.U4)> Dim time As Integer
End Structure
Так что я думаю, что когда Environment.TickCount возвращает отрицательное значение, то же самое произойдет и с GetLastInputInfo, верно? Но тогда значения вычитания будут неправильными, потому что они будут отрицательными, так что, насколько я понимаю, проблема заключается в следующем:
Math.Abs(CType(Environment.TickCount, Long) - CType(lastInput.time, Long)) > m_idleTime
Что вы думаете?