C# console threading probléma?
Figyelt kérdés
Hogyan készítsünk olyan C# konzol alkalmazást, ahol az első sorban lévő dátum másodpercenként frissül, a következő sorokban pedig adatokat kér a felhasználótól, hogy a kért adatok ne frissüljenek másodpercenként?
pl.:
2030.06.30 22:10:1
Kérem írjon ide valamit:
------------------------------
2030.06.30 22:10:20
Kérem írjon ide valamit:
-------------------------------
...
2022. jún. 30. 16:48
1/4 anonim válasza:
Hát ne az egész konzolt ürítsd/rajzoltasd újra, csak az első sorát.
3/4 anonim válasza:
Csak egy elméleti lehetőség, nem tudom, hogy működne -e a gyakorlatban, de kb. az az elképzelés, hogy az egész tartalom frissül a háttérben, viszont a szövegbevitelt nem hagyományos úton próbálod kivitelezni, hanem a háttérben egy karakter tömbben/stringben tárolod a billentyű leütéseket, és az egész konzol szövege pont annyiszor frissül másodpercenként, hogy az a végfelhasználó szempontjából ne (nagyon) legyen szembetűnő. Tehát alap esetben, másodpercenként elég, ha max 60x frissül a szöveg, de lehet ez kevesebb is, mondjuk 30 vagy akár 15 is. Egy külön változó folyamatosan tárolja a dátumot, ami másodpercenként egyszer frissül (ettől te még újra és újra kiíratod a már meglévőt), a "Kérem írjon ide valamit" egy konstans string, amit meg neked kell begépelni, az természetesen változó, hogy mi. Még az alsóvonás karaktert is imitálhatod, hogy villogjon, ha a karakter tömböd utolsó +1 eleméhez mindig hozzáfűzöd, vagy ha nincs gépelve semmi, akkor ez lesz mindig a 0. elem a karakter tömbben. Most ezt megoldhatod úgy, hogy a dátum, a konstans string, és a begépelni kívánt karakter tömb mindig össze vannak fűzve egy összesített újabb stringben újra kiíratás előtt, vagy pedig az összeset átkonvertálod egy nagy karakter tömbbé, és utána íratod ki, nem tudom melyik a hatékonyabb. Szokták mondani, hogy ilyen extrém esetekben a string buildert érdemesebb használni, mert a sima string mindig újabb példányt hoz létre a memóriában. Ha hülyeséget írtam, bocsi, nem sokat konzoloztam, de biztosan kell legyen működő megoldás, ha funkcionálisan nem is a leghatékonyabb, de látszólag azt a hatást tudja kelteni. Amúgy ez nem WinForm, hogy a folyamatos frissítés nagyon lassítja a gépet, pont ez a jó benne, hogy folyamatos tartalom változásnál is elég gyors marad, legalább is sok évvel ezelőtt egy régebbi gépemen ez volt a tapasztalatom. Persze Thread Sleep -et mindenképp használnod kell, hogy ne maxon pörgesse a procit/szálat.
4/4 EgyGabor válasza:
Szerintem csak Win API hívással vagy esetleg valami console extension nuget package-vel szerintem.
Nem threading problémád van, hanem console hozzáférési.
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
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!