Timery
aleksjej
Timery w C#
Są dwa sposoby na tworzenie timerów w C#. Pierwszy z nich to oczywiście użycie możliwości IDE takiego jak VS2005. Opisze tu jednak także ręczny sposób bo na pewno warto znać obie metody.
1) Użycie Visual Studio 2005
- Będąc w trybie projektowania formatki rozwijamy Toolbox
- Odnajdujemy "Timer" i przeciągamy na naszą formatkę. Na dole powinna pokazać się ikonka nazwana timer1
- Zaznaczając w/w ikonke możemy w panelu Properties zdefiniować podstawowe właściwości timera takie jak Interval (w ms) oraz standardowo Name (nazwa obiektu).
- Aby zdefiniować metodę która ma się wykonywać wraz z zajściem zdarzenia timer1.Tick tradycyjnie dwókrotnie klikamy na ikonke reprezentującą nasz timer. Środowisko powinno wygenerować coś takiego :
private void timer1_Tick(object sender, EventArgs e)
{
//Zrob cos...
}
Tak otrzymany Timer mozemy obslugiwac wywolując na obiektcie timer1 metode Start() lub Stop().
1) Ręczne ustawianie timerów
Oto przyklad programu, który co 1000 ms wypisuje " . " na konsole :
using System;
using System.Collections.Generic;
using System.Text;
using System.Timers;
namespace HelloTimer
{
class Program
{
static void Main(string[] args) { new Program(); }
public Program() {
odmierzacz = new Timer(); //Tworzenie obiektu
odmierzacz.Interval = 1000; //Ustawienie przerywania na 1000ms (1s)
odmierzacz.Elapsed += new ElapsedEventHandler(this.wykonujMnieCoJakisCzas); //Przypisanie metody
odmierzacz.Start(); //Start timera
Console.ReadKey();
}
private void wykonujMnieCoJakisCzas(object sender, EventArgs e) {
Console.Write(" . "); //Wypisujemy kropke na ekran co 1s :)
}
private Timer odmierzacz; //Deklaracja timera
}
}
Uwagi koncowe
Warto zwrócić uwagę, że w w/w przypadkach mamy do czynienia z dwoma różnymi klasami. VS2005 generuje nam obiekt typu System.Windows.Forms.Timer a w drugim przypadku do czynienia mamy z System.Timers.Timer.
Główną różnicą jest chyba różne nazewnictwo Eventów : "Tick" w pierwszym przypadku, "Elapsed" w drugim...
Wersja poprawna
Hehe jasne, pewnie masz racje :) niestety nie próbowałem sie doszukać na czym polega różnica miedzy tymi obiektami - pewnie "foremkowa" dziedziczy z system.timers ale glowy nie dam. Dzieki za komentarz, to moj pierwszy art. i mam nadzieje nie ostatni. Pozdrawiam
Fajnie, przydatne, ale o tej delegacji mógłbyś więcej napisać, bo komentarz "przypisanie metody" to troche za mało. No i chyba nie na nazwie zdarzeń polega różnica między tymi obiektami :P