Végtelen ciklus?
Én megpróbálnám szálakkal megoldani.
Az egyik szál végzi a csipogást a megfelelő paraméterekkel egy while ciklusban, melynek feltétele egy logikai változó értéke. És lenne stop() egy metódusa, ami ezt a változót állítja false-ra.
A másik szál pedig blokkol billentyűleütésig, és ha ez megtörténik, akkor meghívja a csipogó szál stop() metódusát.
Kíváncsi lennék a pirosmancsú(ak) ügyesebb megoldására, hogy én is tanuljak belőle. Nem tudom, mi nem jó vagy mi nem hasznos abban, amit írtam. :)
Konkrétabban az elképzelésem:
Főprogram:
- bekéri a két számot
- létrehozza egy CsipogoSzal objektumot a paraméterekkel
- elindítja a szálat
- vár egy billentyűleütésig
- meghívja a CsipogoSzal objektum stop() metódusát
CsipogoSzal osztály:
- megfelelő módon az őse a szál (nemtom C#-ban hogy van, én Java-ban dolgozom)
- van egy mehet nevű logikai típusú adattagja, ami kezdetben true
- a fő metódusában (amit a szál indításakor meghívódik, Java-ban ezt run()-nak hívják) van a while(mehet){} cikluson belül a csipogás
- és van egy stop() { mehet = false; } metódusa.
Mondjuk amire nem gondoltam korábban, hogy billentyűleütésre azonnal szakítsa meg az egészet: ezt meg lehet úgy oldani, hogy a csipogó ciklus 1 milliszekundumonként iterál (ugye sleep/delay) és belül számolgatja a szükséges intervallumokat.
Köszönöm másik oldalról közelítetted meg a dolgot viszont még így sem világos de majd a google segít :)
egyébként bekér 2 számot eltelik a x sec csipog 2 őt aztán megint el telik az elején bekért idő megint 2 csipogás aztán megint x idő megint csipogás aztán megszakít remélem te is így értelmezted :)
Nem is értem mi a gond.
Berakod a csipogós részt egy végtelen ciklusba, aztán futtatás közben CTRL+C-vel megszakítod.
Fölösleges több szál.
"Kíváncsi lennék a pirosmancsú(ak) ügyesebb megoldására, hogy én is tanuljak belőle."
Kezdjük ott, hogy egy szálnak nincs "stop" metódusa. A szál maga egy metódus.
Folytatva azzal, hogy teljesen felesleges szálakkal szórakozni.
A csipogások gyakoriságát simán ki lehet számolni osztással, a cikluslefutások számát is, úgyhogy ezzel nem fárasztok senkit.
Ami még nem megoldott ugye, az az, hogy a ciklus blokkolása nélkül kérjünk be karaktert, ez ugye sima ReadKey()-el nem jó, mert az blokkolja a hívó szálat.
Viszont van a KeyAvailable property, ami megmondja, hogy van-e az app keyboard buffer-ben várakozó karakter, viszont nem blokkol. Ha van, akkor break, és kész is.
Esetleg ha beleférne még egy kérdés :)
Őőő mikor végig fut a végtelen ciklus bekér 1 bekér 2 visszaszámol csipog x et utána van egy 2 sec delay amíg végig vizsgálja hogy eleget csipogott e azzal lehet valamit kezdeni?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!