2013-08-01 5 views
0

Я закодировал простой таймер для запуска каждые 15 секунд, чтобы транслировать какое-то сообщение. Однако ничего не происходит.Мой код таймера C# не работает

public void InitTimer() 
     { 
      loginTimer = new Timer(); 
      loginTimer.Tick += new EventHandler(loginTimer_Tick); 
      loginTimer.Interval = 15000; 
      loginTimer.Start(); 
     } 

     private void loginTimer_Tick(object sender, EventArgs e) 
     { 
      Debug.WriteLine("Test!"); 
     } 

Это мой код.

Я называю следующее, когда нажата кнопка:

InitTimer(); 

Но ничего не происходит каждые 15 секунд .. почему?

Спасибо!

+6

«Ничего не происходит каждые 15 секунд», возможно, один из самых забавных фраз, которые я видел в вопросе. .. –

+1

Вы пытались установить контрольные точки как в 'InitTimer()', так и 'loginTimer_Tick'? Кроме того, вы строите в режиме отладки? –

+0

Заканчивается ли родительский поток? – evilbhonda

ответ

4

Я сделал все, что вы сказали, и не было никакой проблемы:

public partial class Form1 : Form 
{ 
    Timer loginTimer; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    public void InitTimer() 
    { 
     loginTimer = new Timer(); 
     loginTimer.Tick += new EventHandler(loginTimer_Tick); 
     loginTimer.Interval = 1000; 
     loginTimer.Start(); 
    } 

    private void loginTimer_Tick(object sender, EventArgs e) 
    { 
     MessageBox.Show("Test!"); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     InitTimer(); 
    } 
} 

enter image description here показать нам свой код или найти ошибку в другом месте.

+1

Это не отвечает на вопрос, но +1 за усилия, которые вы сделали –

3

Код работает нормально. But nothing happens every 15 seconds.. why is that? Ну, все происходит, но вы не можете его увидеть. Зачем? Потому что вы используете Debug.WriteLine.

В отличие от Console.WriteLine, отладочные выходы на TraceListener, а не на Консоль. Чтобы увидеть результат, вам необходимо зарегистрировать слушателя (который, я уверен, вы этого не сделали).

Таким образом, чтобы проверить, если ваш код действительно работает, зарегистрировать слушатель, используйте другой путь (как Console.WriteLine или MessageBox.Show) или просто установить контрольную точку в вашем loginTimer_Tick method.

Чтобы зарегистрировать слушателя и вывод в консоли, вы можете продолжить так:

TextWriterTraceListener listener = new TextWriterTraceListener(System.Console.Out); 
Debug.Listeners.Add(listener); 

Просто убедитесь, что вы находитесь в режиме отладки (или что вы определили вручную debug флаг).

Как примечание стороны, ваш делегат вызов конструктора является излишним, вы можете сократить его

loginTimer.Tick += loginTimer_Tick; 
Смежные вопросы