PDA

Просмотр полной версии : [Помогите!] Как грохнуть таймер....


iVs.Dark
16.08.2011, 14:35
private void button1_Click(object sender, EventArgs e)
{
System.Timers.Timer deltimer = new System.Timers.Timer();
deltimer.Elapsed += new ElapsedEventHandler(deltimer_Tick);
deltimer.Enabled = true;
deltimer.Interval = 1500;
GC.KeepAlive(deltimer);
}

private void button2_Click(object sender, EventArgs e)
{
deltimer.Stop(); deltimer.Dispose();
}


Как его выключить? на нажатие второй кнопки реакция со стороны таймера нулевая, как работал так и работает дальше.

можно конечно воткнуть костыль:

bool log = false;

private void deltimer_Tick(object sender, EventArgs e)
{
if (log == false)
{
.....
}
}

private void button2_Click(object sender, EventArgs e)
{
log = true; deltimer.Dispose();
}


Но может есть какой-то метод чтобы его прервать? на msdn его не нашел, там только timer.Enabled = false; timer.Stop();

fesssi
16.08.2011, 18:57
Попробуй запустить его в отдельном потоке а потом убить.) это как вариант.

MCseller
16.08.2011, 19:22
private void button1_Click(object sender, EventArgs e) { System.Timers.Timer deltimer = new System.Timers.Timer();
Если делать так, то таймер будет доступен только в данном методе, поэтому либо указывай его в начале класса, чтобы он был доступен во всём классе, либо создавай в конструкторе.