2013-02-11 22 views
8

Tôi đang sử dụng bộ hẹn giờ từ không gian tên Timers. Điều gì xảy ra với bộ hẹn giờ khi máy tính chuyển sang chế độ ngủ hoặc ngủ đông?Điều gì xảy ra với bộ hẹn giờ ở chế độ chờ?

Tôi có hẹn giờ được đặt thành chậm trễ 6 giờ.

Điều gì sẽ xảy ra trong những trường hợp đó.

1) Bộ hẹn giờ bắt đầu vào giờ 0 và chuyển sang chế độ ngủ/ngủ đông ngay lập tức. Sau đó, PC thức dậy vào giờ 5. Bộ hẹn giờ của tôi có bị cháy sau 1 giờ hoặc sau 6 giờ tiếp theo không?

2) Bộ hẹn giờ bắt đầu vào giờ 0 và chuyển sang chế độ ngủ/ngủ đông ngay lập tức. Sau đó, PC thức dậy vào giờ 7. Bộ hẹn giờ của tôi sẽ kích hoạt ngay khi PC khởi động hoặc sẽ "lỡ" một lần và cháy trong 5 giờ tới? Nó sẽ bắt đầu đếm cho đến khi sự kiện tiếp theo từ thời điểm PC đánh thức hoặc từ sự kiện "nhỡ" trước đó?

+0

Đây là thứ bạn có thể dễ dàng kiểm tra cho chính mình. Hãy thử và đăng câu trả lời. –

+0

Các kết quả khi bạn thử với 5 phút. Hay bạn chưa thử? – I4V

+0

@HansPassant Tôi đã nói với tôi rằng tôi không thể kiểm tra nó ngay bây giờ. – Hooch

Trả lời

19

Ok. Tôi hỏi người bạn của tôi và đây là những lời khuyên của anh ấy:

23:21:32 : Timer started 
23:21:35 : PC Goes Sleep 
23:22:50 : PC Wakes 
23:22:50 : Timer fired 
23:23:50 : Timer fired 

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Threading; 

namespace Test 
{ 
    class Program 
    { 
     static System.Timers.Timer timer; 

     static void Main(string[] args) 
     { 
      timer = new System.Timers.Timer(); 
      timer.Interval = 60 * 1000; 
      timer.AutoReset = true; 
      timer.Elapsed += timer_Elapsed; 
      timer.Enabled = true; 

      Console.WriteLine(String.Format("{0}:{1}:{2} : Timer started", DateTime.Now.ToLocalTime().Hour, DateTime.Now.ToLocalTime().Minute, DateTime.Now.ToLocalTime().Second)); 

      timer.Start(); 

      Thread.Sleep(Timeout.Infinite); 
     } 

     static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
     { 
      Console.WriteLine(String.Format("{0}:{1}:{2} : Timer fired", DateTime.Now.ToLocalTime().Hour, DateTime.Now.ToLocalTime().Minute, DateTime.Now.ToLocalTime().Second)); 
     } 
    } 
} 

Vì vậy, trong ngắn hạn. Sau khi ngủ và thức dậy kiểm tra bộ đếm thời gian nếu nó đã bỏ lỡ bất kỳ sự kiện nào. Nếu nó bỏ lỡ, nó sẽ bắt đầu đếm cho đến khi sự kiện tiếp theo từ 0.

+3

-1 cho câu hỏi nhưng +1 cho câu trả lời . – I4V

+2

@ I4V tại sao -1 ?? Đây là một câu hỏi hay, và Hooch tự kiểm tra vì không ai biết câu trả lời đúng. Tuyệt quá! Anh ấy đã tiết kiệm thời gian của tôi) –

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