Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# Pokretanje eventa u odredjeno vreme

[es] :: .NET :: .NET Desktop razvoj :: C# Pokretanje eventa u odredjeno vreme

[ Pregleda: 1656 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Aleksandrov

Član broj: 47782
Poruke: 161
*.ns.ac.yu.



Profil

icon C# Pokretanje eventa u odredjeno vreme25.02.2009. u 10:00 - pre 183 meseci
Pisem program u VSc#2008
Zelim da se u tacno odredjeno vreme (01:00) desi neki dogadjaj. Trenutno znam za dva nacina kako to da uradim
Prvi je da u tredu stavim da se stalno uporedjuju trenutno vreme i zeljeno vreme pa da tada pokrenem zeljeni event tj.

Code:

        static void Sacekaj_Event()
        {
            Thread.Sleep(50);
            if (trenutno_vreme>zeljeno_vreme) UradiAkciju();
        }


Ovo mi se ne dopada zato sto mi deluje da ce ova provera vremena da jede slobodne resurse kao ludo. Jesam li upravu?

Druga varijanta je da napravim tajmer i da mu postavim

Code:

timer.interval = zeljeno_vreme - trenutno_vreme

Sto isto ima odredjenih mana.

Postoji li jos neko resenje ili da iskoristim neko od ovih resenja?
---------------------
****
< 9 9 > My name
..( o ).. is
. . -- . .MX86251 ?
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
*.ADSL.neobee.net.



+987 Profil

icon Re: C# Pokretanje eventa u odredjeno vreme25.02.2009. u 11:38 - pre 183 meseci
Problem sa prvim pristupom - stalno ce pozivati akciju kada prodje zadato vreme plus Sleep je lose resenje u svakom slucaju

Drugi pristup mi se cini boljim mada moze da se desi da bude prilicno neprecizan.

Treci pristup je da postavis interval na timeru na nekih 1000ms pa proveravas da li je

trenutno_vreme>zadato_vreme pa ugasis timer ili postavis neki flag i izvrsis dogadjaj.
 
Odgovor na temu

Sapphire
Denis Biondić
.NET software developer
Nürnberg, Germany

Član broj: 213086
Poruke: 290
212.39.113.*



+6 Profil

icon Re: C# Pokretanje eventa u odredjeno vreme01.03.2009. u 01:39 - pre 183 meseci
Timer je za ovu namjenu daleko najbolji. Iskoristi System.Windows.Forms Timer klasu, jer nije thread timer (znaci, ceka "slobodan" trenutak u main/GUI thread-u). Za interval stavi 1000ms.

Isto si pitao si da li ce poseban thread sa Sleep(50) jesti resurse kao lud? Sto ne napravis program sa jedinim takvim thread-om, pa pogledas u task manageru? Zauzece procesora nece biti preko 1% za tu aplikaciju (opet zavisi od procesora naravno). Cak ako stavis i Sleep(1), nista se bitno nece promijeniti. Mikrosekunde su jako veliki intervali za procesor, te doslovno oduzimaju tek hiljaditi dio procesorske snage.
Naravno, ne vjerujem da si stavio Thread.Sleep() u glavni GUI thread (znaci da nisi kreirao poseban). Ovo ne bi imalo nikakvog smisla, i napravio bi jako velik problem sa osvjezavanjem ekrana programa (njegovih prozora).
My programs don’t have bugs, they just develop random features.
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: C# Pokretanje eventa u odredjeno vreme

[ Pregleda: 1656 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.