2012-04-15 29 views
8

Tôi đang chuyển một ứng dụng từ ActionScript3.0 (Flex) sang C# (WPF) .AS3.0 đã có một tiện ích tiện dụng gọi là getTimer(), trả về thời gian kể từ khi máy ảo Flash bắt đầu bằng mili giây. tìm kiếm trong C# thông qua các lớp học nhưNhận thời gian trôi qua kể từ khi ứng dụng bắt đầu

DateTime 
DispatcherTimer 
System.Diagnostics.Process 
System.Diagnostics.Stopwatch 

nhưng không tìm thấy gì giống như thế này.Đây có vẻ là một tính năng rất cơ bản đối với tôi.Ví dụ Unity3D chạy trên Mono có thứ gì đó quen thuộc. Tôi có bỏ lỡ một số tiện ích ở đây không?

Xin cảm ơn trước.

Trả lời

26

Process.GetCurrentProcess().StartTime là bạn của bạn.

..so để thời gian trôi qua kể từ khi bắt đầu:

DateTime.UtcNow - Process.GetCurrentProcess().StartTime.ToUniversalTime() 

cách khác, nếu bạn cần thêm độ nét, System.Diagnostics.Stopwatch có thể là một lợi thế. Nếu vậy, hãy bắt đầu đồng hồ bấm giờ khi ứng dụng của bạn bắt đầu:

Stopwatch sw=Stopwatch.StartNew(); 

sau đó truy vấn thuộc tính sw.Elapsed trong khi chạy thử.

+0

Cho dù lựa chọn cái này hay cái kia không phải là vấn đề chính xác mà là nhu cầu thay thế. 'Process.GetCurrentProcess(). StartTime' sẽ không bao giờ được gọi cùng lúc với' Stopwatch.StartNew() '! Vì vậy, nó phụ thuộc vào thời điểm người dùng muốn bắt đầu thời gian. :) –

+0

Bạn có chắc Process.GetCurrentProcess trả về thời gian kể từ khi Ứng dụng khởi động? Tôi chỉ cần thực hiện một kiểm tra: (DateTime.Now -Process.GetCurrentProcess(). StartTime) .TotalSeconds .Tại thời điểm các ứng dụng là tôi in thời gian để Console.It bắt đầu từ 16-17 giây. Nó rõ ràng là quá nhiều bởi vì mất tối đa 4 giây để Ứng dụng bắt đầu. –

+0

Thú vị. Các tài liệu dường như đồng ý với tôi. Nếu điều này thực sự là trường hợp, tôi muốn nói nó xứng đáng với một câu hỏi mới. – spender

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