11 Stimmen

Beinhaltet GetTickCount() die Zeit, die im Ruhezustand verbracht wurde?

Zur Verdeutlichung: Ich meine die Zeit, in der die System suspendiert/hiberniert ist, nicht der aufrufende Thread (GetTickCount() gibt die Anzahl der Millisekunden seit dem Systemstart zurück).

7voto

Toon Krijthe Punkte 51819

Soweit ich weiß, hat GetTickCount nichts mit Threads zu tun und zählt die Zeit, seit das System gestartet wurde. Aber es ist besser zu verwenden GetTickCount64 um die 49,7-Tage-Frist zu vermeiden.

Übrigens, um zu bekommen, was Sie wollen, brauchen Sie die GetThreadTimes Funktion. Sie zeichnet die Erstellungs- und Beendigungszeit sowie die Zeit auf, die der Thread im Benutzer- oder Kernelbereich verbracht hat. So haben Sie eine gute Möglichkeit, den Zeitaufwand zu berechnen.

Ok, ich habe den "System"-Teil der Frage übersehen. Aber das ist einfach. Im Winterschlaf setzt GetTickCount die Zählung fort. Denn die Leute haben unter dem 49,7-Tage-Fehler gelitten, wenn der Computer die meiste Zeit im Ruhezustand war. Siehe Linktext Hier finden Sie weitere Informationen.

6voto

Roddy Punkte 64661

Kurze Antwort: Ja.

Längere Antwort: Lesen Sie die GetTickCount() docs: Es ist die verstrichen Zeit seit dem Systemstart, und selbst MS würde nicht behaupten, dass die Zeit stillsteht, während sich der Computer im Ruhezustand befindet...

3voto

marcinj Punkte 46621

Für alle, die eine Antwort für die Windows CE Plattform suchen, aus den Unterlagen:

http://msdn.microsoft.com/en-us/library/ms885645.aspx

können Sie lesen:

Bei Release-Konfigurationen gibt diese Funktion die Anzahl der Millisekunden seit dem Hochfahren des Geräts zurück, mit Ausnahme der Zeit, in der die System ausgesetzt war . GetTickCount beginnt beim Booten bei 0 und zählt dann von da an aufwärts.

2voto

Ben Bryant Punkte 2985

Ja, GetTickCount enthält die Zeit des Aussetzens und des Ruhezustands.

Im folgenden Python-Skript rufe ich die Sleep-API auf, um 40 Sekunden zu warten, damit ich die Möglichkeit habe, den Computer in den Ruhezustand zu versetzen, und ich gebe die Zeit davor und danach sowie die Tick-Zahl-Differenz danach aus.

import win32api
import time
print time.strftime("%H:%M:%S", time.localtime())
before = win32api.GetTickCount()
print "sleep"
win32api.Sleep(40000)
print time.strftime("%H:%M:%S", time.localtime())
print str(win32api.GetTickCount()-before)

出力します。

17:44:08
sleep
17:51:30
442297

Wenn GetTickCount die Zeit während des Ruhezustands nicht berücksichtigen würde, wäre es viel weniger als die Zeit, die ich im Ruhezustand verbracht habe, aber es stimmt mit der tatsächlich verstrichenen Zeit überein (7 Minuten 22 Sekunden entsprechen 442 Sekunden, d. h. 442000 Millisekunden "Ticks").

0voto

shoosh Punkte 73374

GetTickCount() gibt die Zeit in Millisekunden seit dem Hochfahren des Computers an. Sie hat nichts mit dem aufrufenden Prozess zu tun.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X