Idle time
4 отговора
131 прегледа
Idle time
Kak moga da razbera dali s dadena programa ne raboteno izvestno vreme. Niakakva ideia???
Re: Idle time
Кода е хубав, но се използва Timer. Той пък от своя страна се "нулира" всяка вечер в 0:00 часа. Това неминуемо ще доведе до грешно поведение на програмата.
Би могло да се използва системната GetTickCount.
"API функцията на Windows GetTickCount връща броя милисекунди, изминали след стартирането на Windows. В зависимост от системата, тази функция връща стойност с по-висока точност от функцията Timer на Visual Basic. Функцията Timer връща броя секунди след полунощ, като включва части от секундата, правейки илюзия за точност до милисекунди, но всъщност Visual Basic обикновено обновява стойността, върната от Timer само 18.2 пъти в секунда. ...
Друго предимство на GetTickCount пред функцията Timer е, че пресичането на полунощ не предизвиква проблеми. В полунощ функцията Timer се връща от 0, докато GetTickCount връща нула само след 49.7 дни непрекъсната работа на компютъра. ..."
----------------------------------
помислих, хареса ми, помислих пак...
Би могло да се използва системната GetTickCount.
"API функцията на Windows GetTickCount връща броя милисекунди, изминали след стартирането на Windows. В зависимост от системата, тази функция връща стойност с по-висока точност от функцията Timer на Visual Basic. Функцията Timer връща броя секунди след полунощ, като включва части от секундата, правейки илюзия за точност до милисекунди, но всъщност Visual Basic обикновено обновява стойността, върната от Timer само 18.2 пъти в секунда. ...
Друго предимство на GetTickCount пред функцията Timer е, че пресичането на полунощ не предизвиква проблеми. В полунощ функцията Timer се връща от 0, докато GetTickCount връща нула само след 49.7 дни непрекъсната работа на компютъра. ..."
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub cmdGet_Click()
Dim lngM As Long
lngM = GetTickCount
'...
End Sub
----------------------------------
помислих, хареса ми, помислих пак...
Re: Idle time
Щирлиц, а какво ще стане ако компютъра работи половината от тези 49.7 денонощия (Към 24 и нещо) ?
Стойността върната от GetTickCount ще стане отрицателна защото типа Long във VB6 е със знак, и когато най-старшия бит на едно Long число стане 1, резултата става отрицателен
Един от начините да се избегне това, е да се преобразува резултата от функцията по следния начин:
Dim byteArray(3) As Byte
lngM=GetTickCount()
CopyMemory byteArray(0),lngM,4
След CopyMemory в byteArray масива имаш четирите байта на Long числото.
Просто правиш необходимите умножения и събирания за да "обърнеш" тези 4 байта в Long без знак (като резултата ще се наложи да се вкара в променлива от типа на Double например).

Стойността върната от GetTickCount ще стане отрицателна защото типа Long във VB6 е със знак, и когато най-старшия бит на едно Long число стане 1, резултата става отрицателен
Един от начините да се избегне това, е да се преобразува резултата от функцията по следния начин:
Dim byteArray(3) As Byte
lngM=GetTickCount()
CopyMemory byteArray(0),lngM,4
След CopyMemory в byteArray масива имаш четирите байта на Long числото.
Просто правиш необходимите умножения и събирания за да "обърнеш" тези 4 байта в Long без знак (като резултата ще се наложи да се вкара в променлива от типа на Double например).
Re: Idle time
Ами, не знам. Лично аз не съм пробвал да не си изключвам компа за 49 денонощия, въпреки че старата счетоводна щайга преди не беше рестартирана много често (по веднъж месечно и стигаше) - не съм правил експерименти и наблюдения. Тази информация я черпя от едно малко книжле, което се оказа много полезно за развитието ми.
Ще направя опит някъде, където скоро не е рестартиран Windows-a, и ще пиша какви показания изкарва тази функция. Не че не вярвам на калкулатора, но информацията, че Win9x може да работи безпроблемно само 49 денонощия съм я виждал и друг път, когато ставаше въпрос за Интернет сървър, и се спореше дали Win95 може да се справи с това.
----------------------------------
помислих, хареса ми, помислих пак...
Ще направя опит някъде, където скоро не е рестартиран Windows-a, и ще пиша какви показания изкарва тази функция. Не че не вярвам на калкулатора, но информацията, че Win9x може да работи безпроблемно само 49 денонощия съм я виждал и друг път, когато ставаше въпрос за Интернет сървър, и се спореше дали Win95 може да се справи с това.
----------------------------------
помислих, хареса ми, помислих пак...