2009-02-04 51 views
8

Để làm rõ, ý tôi là thời gian trong khi hệ thống bị tạm ngưng/ngủ đông, không phải là chuỗi gọi (GetTickCount() trả về số mili giây kể từ khi khởi động hệ thống).GetTickCount() có bao gồm thời gian bị tạm ngưng hoặc ngủ đông không?

+0

Câu hỏi ngớ ngẩn, điều gì xảy ra khi bạn dùng thử? Tôi sẽ vì tôi tò mò về câu trả lời quá, nhưng tôi không có một máy Windows suspendable tiện dụng vào lúc này. –

Trả lời

5

Theo như tôi biết, GetTickCount không liên quan đến chủ đề và tính thời gian kể từ khi hệ thống bắt đầu. Nhưng tốt hơn là sử dụng GetTickCount64 để tránh bị mất 49,7 ngày.

Nhân tiện, để có được những gì bạn muốn, bạn cần có chức năng GetThreadTimes. Nó ghi lại thời gian tạo và thoát và lượng thời gian mà chuỗi đã chi tiêu trong không gian người dùng hoặc hạt nhân. Vì vậy, bạn có một cách hay để tính toán lượng thời gian.

Ok, tôi đã bỏ lỡ phần "hệ thống" của câu hỏi. Nhưng điều đó thật đơn giản. Khi ngủ đông GetTickCount tiếp tục đếm. Bởi vì mọi người đã bị lỗi 49,7 ngày khi máy tính ở chế độ ngủ đông hầu hết thời gian. Xem link text tại đây để biết thêm thông tin.

+0

Tôi nghĩ câu hỏi ban đầu đề cập đến việc hệ thống * bị treo hoặc ngủ đông, không phải là một chuỗi cụ thể. –

+1

Điểm. Hoàn toàn bỏ lỡ điều đó. –

0

GetTickCount() cung cấp cho bạn thời gian bằng mili giây kể từ khi máy tính khởi động. nó không liên quan gì đến quá trình gọi nó.

+0

Điều gì xảy ra nếu máy tính đang ở chế độ ngủ đông không phải là quá trình ... – JoshBerke

+0

Tôi cho rằng cách tốt nhất để tìm ra là chỉ cần kiểm tra nó. – shoosh

5

Câu trả lời ngắn gọn: Có.

Còn câu trả lời: Đọc GetTickCount() tài liệu: Đó là trôi qua thời gian kể từ khi khởi động hệ thống, và thậm chí MS sẽ không đề nghị thời điểm đó đứng yên trong khi máy tính của bạn đang hibernating ...

-3

Không, GetTickCount() không bao gồm thời gian hệ thống chi tiêu trong thời gian ngủ đông. Một thử nghiệm đơn giản chứng minh điều này.

bằng Python:

import win32api 
win32api.GetTickCount() 

- đừng ngủ đông -

win32api.GetTickCount() 

và bạn sẽ thấy kết quả ...

+0

phẳng sai và không hữu ích - bit này của python không có cách nào cho phép bạn ngủ đông giữa các cuộc gọi GetTickCount –

+0

Sai ở đây, chỉ cần thử nghiệm – Evgenyt

2

Vâng, GetTickCount không bao gồm đình chỉ/hibernate thời gian .

Trong tập lệnh python sau tôi gọi API Sleep để chờ 40 giây để cho tôi cơ hội đưa máy tính vào chế độ ngủ đông, và tôi in thời gian trước và sau và chênh lệch số đếm sau.

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)

Output:

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

Nếu GetTickCount không bao gồm thời gian trong suốt quá trình ngủ đông nó sẽ ít hơn nhiều so với thời gian tôi ngủ đông cho, nhưng nó phù hợp với thời gian thực tế trôi qua (7 phút 22 giây tương đương với 442 giây, tức là 442000 mili giây "ve").

1

Đối với bất kỳ một tìm kiếm câu trả lời dưới nền tảng Windows CE, từ tài liệu:

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

bạn có thể đọc:

Đối với cấu hình phát hành, chức năng này trả về số mili giây kể từ thiết bị được khởi động, ngoại trừ bất kỳ lúc nào hệ thống bị tạm ngưng. GetTickCount bắt đầu lúc 0 khi khởi động và sau đó đếm số lên từ đó.

Các vấn đề liên quan