2012-01-11 2 views
-2

У меня есть таймерsystem.timer.timer не начинается

System.Timers.Timer progress = new System.Timers.Timer(250); 
progress.SynchronizingObject = this; 
progress.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed); 
progress.AutoReset = false; 

она отключена, то в некоторой функции я стараюсь:

if(!flag) 
    progress.enabled = true; //it doesn't change to true.?? 

Почему?

+0

Что происходит вместо этого? –

+0

timer.enabled = false; без изменений – santBart

+0

Вы устанавливаете его на огонь один раз. Вы уверены, что это _never_ прошло, как прежде, чем вы ожидаете этого? –

ответ

0

после прочтения msdn немного я нашел эту строку:

Если таймер уже включен, когда метод Start называется интервал сброса. Если AutoReset является ложным, необходимо запустить метод Start, чтобы снова запустить подсчет.

Это говорит мне, что вы можете вручную перезапустить таймер с помощью функции timer.start();

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

// If the timer is declared in a long-running method, use 
    // KeepAlive to prevent garbage collection from occurring 
    // before the method ends. 
    //GC.KeepAlive(yourTimer); 

я надеюсь, что вы можете работать дальше на этом

+0

Я проверяю, был ли он уже настроен, но он жив, хотя он не изменяется. timer.enabled == timer.start(); Я не знаю, как это возможно: / – santBart

-1

У меня есть один таймер в моих программах, и я сделал так:

private void StartTimer() 
    { 
     TimeSpan ts = new TimeSpan(0, 0, 5, 0); 

     System.Windows.Threading.DispatcherTimer myDispatcherTimer = new System.Windows.Threading.DispatcherTimer(); 
     myDispatcherTimer.Interval = ts; 
     myDispatcherTimer.Tick += new EventHandler(Each_Tick); 
     myDispatcherTimer.Start(); 
    } 

    private void Each_Tick(object o, EventArgs sender) 
    { 
     //Your Method here 
    } 
+1

он использует System.Timers.Timer – Reniuz

0

Вы можете запустить таймер с

progress.Start(); 

ведьма устанавливает Enabled истины (см документации: http://msdn.microsoft.com/de-de/library/system.timers.timer.start.aspx)

Enabled 

steht in der MSDN wie folgt: "Ruft einen Wert ab, der angibt, ob Timer das Elapsed-Ere ignis auslösen soll, oder legt diesen fest ".

bezieht sich folglich nur auf das Elapsed Ereignis und nicht auf das Starten bzw. Stoppen den Timers a sich.