Vous êtes sur la page 1sur 19

64-66.

Komponenta Timer

Cilj lekcije: Upoznavanje sa osobinama i primenom kontrole Timer i jednostavne primene kontrole
DateTimePicker

Kontrola Timer igra važnu ulogu u razvoju programa kako na strani klijenta tako i na strani servera, kao i u
Windows uslugama. Sa kontrolom Timer možemo pokrenuti događaje u određenom vremenskom intervalu bez
interakcije druge niti ili drugog događaja.

ori enje kontrole Timer


Timer objekat nam je potreban u mnogim situacijama u na em razvojnom okruženju. Primer kada koristimo
Timer Object je kada želimo da postavimo interval između događaja, periodične provere, da pokrenemo proces
u fiksnom vremenskom rasporedu, da pove amo ili smanjimo brzinu u animaciji grafike sa vremenskim
rasporedom itd. Kontrola Timer NEMA VIZUELNI PRIKAZ i radi kao komponenta u pozadini.
ožemo da kontroli emo programe pomo u kontrole Timer u milisekundama, sekundama, minutama, pa čak i u
satima. Kontrola Timer nam omogu ava da postavimo svojstvo nterval u milisekundama. To jest, jedna
sekunda je jednaka 1000 milisekundi. Na primer, ako želimo da postavimo interval od 1 minuta, postavljamo
vrednost u svojstvu nterval kao 60000, to znači 60k1000. Podrazumevano, svojstvo Enabled za kontrolu
Timer je False. Dakle, pre pokretanja programa MORAMO da postavimo svojstvo Enabled na True , tada samo
kontrola Timer pokre e svoju unkciju.
1. Zadatak - C# Timer - VezbaTimer
(oznake). Da bismo razvili ovaj program,
potrebna nam je kontrola Timer i kontrola Label. O 1000 ,š
č , istemskog vremena u kontroli Label.

Dviklik na Timer u Design prikazu, prebacuje u source kod i daje mogu nost upisa unkcionalnosti:
Start i Stop kontrole Timer
Kontrola Timer uključuje metode Start i Stop za pokretanje i zaustavljanje funkcija kontrole Timer.

2. Zadatak - Vezba1Timer
Slede i # program pokazuje kako da koristite Timer za pisanje teksta u tekstualnu datoteku svake sekunde.
Program ima dva dugmeta, tart i top. plikacija e pisati liniju u tekstualnu datoteku svake 1 sekunde nakon
to se klikne na dugme tart. plikacija prestaje da pi e u tekstualnu datoteku kada se klikne na dugme Stop.
Timer Tick događaj
Događaj Timer Tick se javlja kada je navedeni interval tajmera protekao i kada je tajmer omogu en
(Enabled).
myTimer.Tick += new EventHandler(TimerEventProcessor);

Timer proteklog događaja

D đ .D đ Elapsed
E č ( ) f Interval.

MyTimer.Elapsed += OnTimedEvent;

Svojstvo Timer Interval


Svojstvo Tajmer Interval dobija ili postavlja vreme, u milisekundama, pre nego to se Tick događaj podigne u
odnosu na poslednju pojavu Tick događaja.
// Sets the timer interval to 1 seconds.
myTimer.Interval = 1000;
Svojstvo Timer Reset
Svojstvo Timer AutoReset B ž
đ (f ) š ( ).
MyTimer.AutoReset = false;

TimerCallback Delegate

Callback predstavlja metod .O š


; š đ .

Timer Class
System.Timers.Timer pokre e događaj u redovnim intervalima. vo je ne to mo niji tajmer. Umesto Tick
događaja, ima događaj Elapsed event (Protekli događaj). etode Start i Stop za System.Timers.Timer koje su
slične promeni svojstva Enabled. Za razliku od System.Windows.Forms.Timer, događaji su e ektivno stavljeni u
red čekanja – tajmer ne čeka da se jedan događaj zavr i pre nego to ponovo počne da čeka i zatim pokrene
slede i događaj. lasa je namenjena za kori enje kao serverska ili servisna komponenta u vi enitnom
okruženju i nema korisnički inter ejs i nije vidljiva tokom izvr avanja.
lede i primer instancira objekat System.Timers.Timer koji pokre e svoj događaj Timer.Elapsed svake dve
sekunde postavlja rukovalac događaja za događaj i pokre e tajmer.
Kreirajte objekat Timer za interval od jedne sekunde:
myTimer = new System.Timers.Timer(1000);

Podesite protekli događaj za tajmer:


vo se de ava kada prođe interval.
myTimer.Elapsed += OnTimedEvent;
Na kraju, pokrenite tajmer:
myTimer.Enabled = true;

Primer konzolna aplikacija -C# Timer (Console Application)


using System;
using System.Timers;
namespace ConsoleApplication1
{
class Program
{
private static System.Timers.Timer myTimer;
static void Main(string[] args)
{
myTimer = new System.Timers.Timer(1000);
myTimer.Elapsed += OnTimedEvent;
myTimer.AutoReset = true;
myTimer.Enabled = true;
Console.WriteLine("\nPress Enter key to stop...\n");
Console.WriteLine("Timer started {0:HH:mm:ss.fff} ", DateTime.Now);
Console.ReadLine();
myTimer.Stop();
myTimer.Dispose();
Console.WriteLine("Finished...");
}
private static void OnTimedEvent(Object source, ElapsedEventArgs e)
{
Console.WriteLine("Elapsed event raised at
{0:HH:mm:ss.fff}",e.SignalTime);
}
}
}

3. Zadatak - Odbrojavanje

# tajmera
lede i program pokazuje kako da kreirate odbrojavanje sekundi koriste i # tajmer.
bratite pažnju da je Name svojstvo kontrole Timer - aTimer
System.Threading.Timer klasa

System.Threading.Timer je jednostavan, lagan tajmer koji koristi metode povratnog poziva i opslužuju ga niti
skupa niti. NE P EP E se kori enje sa Windows Forms, jer se njegovi povratni pozivi ne de avaju u
niti korisničkog inter ejsa. oristite Timer allback delegat da odredite metod koji želite da tajmer izvr i. Delegat
tajmera je naveden kada je tajmer konstruisan i ne može se promeniti. etoda se ne izvr ava na niti koja je
kreirala tajmer; izvr ava se na ThreadPool niti koju obezbeđuje sistem. Prilikom kreiranja tajmera, aplikacija
speci icira količinu vremena za čekanje pre prvog pozivanja metoda delegata i količinu vremena za čekanje
između narednih poziva. Timer poziva svoje metode kada mu istekne vreme, i poziva svoje metode jednom u
periodu nakon toga. ožete da promenite ove vrednosti ili možete da onemogu ite tajmer kori enjem metode
Timer.Change.
Primer konzolne aplikacije:

using System;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
TimerState TS = new TimerState();
TimerCallback tDelegate = new TimerCallback(CheckStatus);
Timer thisTimer = new Timer(tDelegate, TS, 1000, 1000);
TS.tmr = thisTimer;
while (TS.tmr != null)
Thread.Sleep(0);
Console.WriteLine("Finish !!");
Thread.Sleep(10000);
}
// The following method is called by the timer's delegate.
static void CheckStatus(Object state)
{
TimerState TS = (TimerState)state;
TS.counter++;
Console.WriteLine("{0} Checking Status {1}.",
DateTime.Now.TimeOfDay, TS.counter);
if (TS.counter == 5)
{
(TS.tmr).Change(10000, 100);
Console.WriteLine("changed...");
}
if (TS.counter == 10)
{
Console.WriteLine("disposing of timer...");
TS.tmr.Dispose();
TS.tmr = null;
}
}
}
class TimerState
{
public int counter = 0;
public Timer tmr;
}
}

Rezultat:
C# Kontrola DateTimePicker

Kontrola DateTimePicker vam omogu ava da prikažete i prikupite datum i vreme od korisnika u određenom
formatu.

Kontrola DateTimePicker ima dva dela: oznaku koja prikazuje izabrani datum i iskaču i kalendar koji
omogu ava korisnicima da izaberu novi datum. Najvažnije svojstvo DateTimePicker-a je svojstvo Value, koje
sadrži izabrani datum i vreme.
dateTimePicker1.Value = DateTime.Today;
Svojstvo Value sadrži trenutni datum i vreme na koje je pode ena kontrola. ožete koristiti svojstvo Te t ili
odgovaraju i član alue da biste dobili vrednost datuma i vremena.
DateTime iDate;
iDate = dateTimePicker1.Value;

ontrola može da prikaže jedan od nekoliko stilova, u zavisnosti od vrednosti njenih svojstava. rednosti se
mogu prikazati u četiri ormata, koji su postavljeni svojstvom Format: Long, Short, Time ili Custom.
dateTimePicker1.Format = DateTimePickerFormat.Short;

Konvertujte string u datum i vreme

Možete koristiti metode kao što su Convert.ToDateTime(String), DateTime.Parse() i DateTime.ParseEkact()


za pretvaranje datuma zasnovanog na stringovima u objekat System.DateTime. Više detalja....... String to
DateTime

Metoda DateTime.Substract se može koristiti da bi se pronašla razlika između datuma i vremena između dve
instance metode DateTime. Više detalja..... Find date difference

Kako podesiti objekat datuma i vremena na null?


Podrazumevano, DateTime nije nullable er e tip vrednosti pomo u nullable operatora koji je uveden u
ovo možete posti i. Više o..... Find date difference
4. Zadatak

lede i # program pokazuje kako da podesite i dobijete


vrednost kontrole DateTimePicker1 u MessageBox-u.
Po uzoru na dati primer, vrednost kontrole
DateTimePicker1 prikažite u TextBox-u kao što e zadato
na slici.

Prikaz u TextBox-u:
Izvorni linkovi:

C# Timer Control: http://csharp.net-informations.com/gui/timer-cs.htm

DateTimePicker Control: http://csharp.net-informations.com/gui/cs-datetimepicker.htm

D :
Prepisati u svesku kodove za dodavan e funkcionalnosti pri koriš en u kontrola Timer i DateTimePicker.

Dodatni primeri:

1. Kreiranje jednostavnih igara Primer – loptica


2. Primer - pokretKrug - pokretanje i zaustavljanje loptice

Dodati novu kontrolu Panel i postaviti svojstva kao na slici ispod. Klik na panel e kreirati lopticu, a dugmad
tart i top e pokre u ili zaustavljaju.

Svojstva kontrole Timer:


3. Primer - Timer i grafika – koristi se jedno dugme i đ promene natpisa na dugmetu u zavisnosti
da li je loptica u pokretu ili ne.

Name svojstvo forme je: igra_loptom1


D f , š đ :
Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace primer10_IgraLoptom
{
public partial class Igra_loptom1 : Form
{
SolidBrush cetka = new SolidBrush(Color.Red); // izbor cetke
int X = 0, Y = 0; // pocetne koordinate lopte

public Igra_loptom1()
{
InitializeComponent();
}

private void timer1_Tick(object sender, EventArgs e)


{
X += 20; // nove koordinate centra lopte
Y += 20;
X %= Width; // ako se izaslo iz forme, vracamo se unutra
Y %= Height;

Refresh(); // crtamo ispocetka

private void btKreniStani_Click(object sender, EventArgs e)


{
timer1.Enabled = !timer1.Enabled; // promena dozvole rada tajmera
if (timer1.Enabled) btKreniStani.Text = "Zaustavi"; // promena teksta na dugmetu
else btKreniStani.Text = "Pokreni";

private void Igra_loptom1_Paint(object sender, PaintEventArgs e)


{
Graphics g = e.Graphics;
g.FillEllipse(cetka, X, Y, 50, 50);
}
}
}
Form1.Designer.cs
namespace primer10_IgraLoptom
{
partial class Igra_loptom1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;

/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise,
false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.btKreniStani = new System.Windows.Forms.Button();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.SuspendLayout();
//
// btKreniStani
//
this.btKreniStani.Location = new System.Drawing.Point(337, 30);
this.btKreniStani.Name = "btKreniStani";
this.btKreniStani.Size = new System.Drawing.Size(75, 23);
this.btKreniStani.TabIndex = 0;
this.btKreniStani.Text = "Pokreni";
this.btKreniStani.UseVisualStyleBackColor = true;
this.btKreniStani.Click += new System.EventHandler(this.btKreniStani_Click);
//
// timer1
//
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// Igra_loptom1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.btKreniStani);
this.Name = "Igra_loptom1";
this.Text = "Primer10 - Igra loptom";
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Igra_loptom1_Paint);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button btKreniStani;
private System.Windows.Forms.Timer timer1;
}
}
4. Primer: How to use Timer Control in Windows Forms C#
https://youtu.be/iUFk9uMabKg?list=PLBij9KpN6Ywtd_In8f9iOHa5Wq4IZW_ZD

Vous aimerez peut-être aussi