Diskuze: OOP - niečo funguje inak
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Já nevím co ti na tom nefunguje. Spustíš program, začne odpočet a pro vypnutí programu musí nastat následující podmínky: vlákno již nesmí běžet a program musí projít celou metodu main. To je vše co ten tvůj program dělá, nic jiného ani dělat nemůže. A jinak mezi námi, nebylo by lepší použít <a href="https://msdn.microsoft.com/cs-cz/library/system.timers.timer%28v=vs.110%29.aspx">Timer</a>, místo tvého vlastního časovače?
Ted si nejsem jisty, ale mohlo by stačit nastavit vlákno jako background.
Ondřej Štorc: Zabudol som na to, že ten program prednastavene chce počkať, kým skončia všetky vlákna. Čo sa týka časovača, tak ja nemám predstavu, ako by som spravil, aby sa každú sekundu vypisoval čas. Ak by si mi ukázal, ako spraviť tie moje potrebné funkcie s tým, bol by som rád.
Jan Vargovský (pako): Ďakujem. To presne funguje. Stačilo pridať casomiera.IsBackground = true; pred casomiera.Start();.
Nepočítej s tím, že když dáš Sleep na 1000ms, tak ťi to bude vypisovat každou sekundu....
Prečo nie ? Ako potom spraviť relatívne presnú sekundu ?
Teď tam čekáš 1 sekundu + čas potřebný k vykonání všech instrukcí uvnitř cyklu.
I když vypneš program, tak to vlákno bude pravděpodobně stále zapnuté, mně se to stává běžně. Ideální způsob ukončení vlákna je návrat z funkce vlákna "return".
Použij timer
https://msdn.microsoft.com/….110%29.aspx?…
Relativně přesnou sekundu ti to dá, ale nemůžeš se na to spoléhat.
Proč?
Udáváš, na jak dlouho vlákno nepotřebuje pracovat. Ne, za jak dlouho se
probudí. Napříkald kdybys takto synchronizoval dvě vlákna, tak se ti to
dřív nebo později rozsype.
Zobrazeno 9 zpráv z 9.