2013-11-26 3 views
2

Я пытаюсь реализовать задержку в 10 секунд до вызова метода. Однако метод вызывается всего за одну секунду.Таймер неточный

private void closeDoors(Floor floor) 
    { 
     Timer timer = new Timer(); 
     timer.Interval = 10000; 
     timer.Tick += delegate 
     { 
      DoorManager(floor, Operation.CLOSE, null); 
     }; 
     timer.Start(); 
    } 

Где я иду не так? Спасибо за помощь.

+3

Я не вижу ничего плохого в этом коде. В другом месте может быть ошибка. – Zruty

+1

Используете ли вы 'System.Windows.Forms.Timer' или' System.Timers.Timer'? –

+4

Возможно ли, что вы вызывали 'closeDoors' более одного раза, создавая несколько таймеров? –

ответ

1

Ваша проблема может возникнуть из-за не прекращения работы таймера после завершения работы. Следующий модифицированный код должен работать (до тех пор, как я испытал с Timer):

private void closeDoors(Floor floor) { 
    Timer timer = new Timer(); 
    timer.Interval = 10000; 
    timer.Tick += (s,e) => {  
     DoorManager(floor, Operation.CLOSE, null); 
     ((Timer)s).Stop(); 
    }; 
    timer.Start(); 
} 
0

мне удается исправить приращение Interval таймера, как время задержки в настоящее время используется в процессе вызывается другим вызов метода insideDoorManager().

Смежные вопросы