А какое поведение у таймера должно быть при уходе в спящий режим и выходе из него? Он должен реально тикнуть после выхода или пропустить время? А то у меня складывается ощущение, что он тикает через раз.
... << My edition based on RSDN@Home 1.2.0 alpha 4 rev. 1466 >>
В задаче спрашивается:
Сколько вытечет портвейна из открытого бассейна?
Здравствуйте, stele, Вы писали:
S>А какое поведение у таймера должно быть при уходе в спящий режим и выходе из него? Он должен реально тикнуть после выхода или пропустить время? А то у меня складывается ощущение, что он тикает через раз.
Таймер из Windows.Forms работает по остаточному принципу. Событие от него будет только в том случае, если в очереди сообщений нет никаких других событий.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Здравствуйте, TK, Вы писали:
TK>Таймер из Windows.Forms работает по остаточному принципу. Событие от него будет только в том случае, если в очереди сообщений нет никаких других событий.
Можно пример, когда я не получу сообщения от таймера?
Спасибо.
Здравствуйте, Alex Dav, Вы писали:
AD>Можно пример, когда я не получу сообщения от таймера?
Если GUI-поток будет чем-то занят в течении нескольких периодов срабатывания таймера, и не будет обрабатывать свою очередь сообщений, то это несколько периодов будут пропущены.
int i = 0;
System.Windows.Forms.Timer tm = new Timer();
long m = DateTime.Now.Ticks;
tm.Tick += new EventHandler(
(o, ev) =>
{
label1.Text = (++i).ToString();
if (DateTime.Now.Ticks - m > 5000 * 10000)
{
tm.Stop();
label1.Text += " Stop";
}
});
tm.Interval = 1000;
tm.Start();
//System.Threading.Thread.Sleep(3100); // Имитация занятости
Попробуйте запустить так, потом раскомментируйте последнюю строку.