system.timer.timer не запускается - PullRequest
0 голосов
/ 11 января 2012

У меня есть таймер

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.??

Почему?

Ответы [ 3 ]

0 голосов
/ 11 января 2012

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

progress.Start();

whitch устанавливает значение Enabled в true (см. Документацию: 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-Ereignis 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.

0 голосов
/ 11 января 2012

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

Если таймер уже включен при вызове метода Start, интервал сбрасывается.Если AutoReset имеет значение false, метод 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 голосов
/ 11 января 2012

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

    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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...