Pouštění kódu po časovém intervalu   otázka

VB.NET

Zdravím, píšu si takovou jednoduchou aplikaci, která mi skenuje nějaká data a sleduje jejich změny. Já bych potřeboval udělat, aby ta data sledovala třeba každý tři minuty. Zkoušel jsem to již všeljak, ale vždy se mi program zacyklí a zamrzne :( Už si nevím rady. Existuje nějaká funkce, které toto dokáže? Zkoušel jsem na to aplikovat i Timer, ale nějak se mi stejně nedařilo. Dík za každou radu ;-) Jirka

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud se jedná o sledování souborů a/nebo složek, tak System.IO.FileSystemWatcher umí vyvolat událost v případě vytvoření, smazání, změnění nebo přejmenování.

Pokud ne tak lze použít obyčejný System.Windows.Forms.Timer.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Děkuji za odpověď. Nejspíš na to půjde ten systénovy timer. Nějak ale nechápu, jak funguje. Mám toto správně? Program se mi vždy zas zacyklí.

Dim t As New System.Windows.Forms.Timer()
t.Interval = 10
t.Start()
While t.Enabled
'dokud timer bezi, tak nic nedelat
End While
t.stop()

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ne, funguje to jinak:

kromě nastavení intervalu a spuštění je třeba taky obsloužit událost Tick, která nastane vždy po {Interval} milisekundách, a do které napíšete svůj kód, který se má periodicky vykonávat.

Žádné while t.Enabled tam pak není, událost nastává "automaticky".

Ale pozor: je potřeba, aby Timer byl vytvořen v nějakém běžícím okně (přesněji musí se vykonávat jeho window procedura/smyčka zpráv, neboť Timer není nic jiného než zapozdřená funkce OS a pravidelně posílá zprávu WM_TIMER, v jejíž reakci se pak zavolá váš kód v obsluze události Tick), stačí i nějaké skryté okno nebo message-only window (pokud tohle v .netu jde).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback