Új hozzászólás Aktív témák
-
joysefke
veterán
Mi lenne a proper way helyette?
Nem vagyok biztos benne (*).
De első körben én megnézném, hogy Program.cs.Main()-ben egy új meztelen Thread-et létrehozva és azon indítva a WebHost-ot, hogyan viselkedik a webserver. De én a Thredeket sem szeretem
* Ami miatt bizonytalan vagyok, az az, hogy hogyan akarjuk/tudjuk kezelni a webservice esetleges chrashét. (egyáltalán akarsz-e ezzel foglalkozni):
Ha a background thread (ami a webservert futtatja) crashel (kezeletlen exception jön belőle) akkor érdemes lenne ezt az exceptiont valamilyen szinten elkapni, loggolni és vagy újraindítani a szervert vagy inkább az egész alkalmazást leállítani. Ez az egész opcionális, de alapvetően nem egészséges megadni az esélyét hogy egy bármilyen threadben kezeletlen exception ragadjon.
Ahogy nézem a BackgroundWorkeren van egy erre használható event: "RunWorkerCompleted" , az eventargs pedig: "RunWorkerCompletedEventArgs" ennek pedig van egy Error propertyje ami az esetlegesen elkapott exceptiont tartalmazza...
Ha Threadben gondolkodsz akkor jó pár alternatív opciód van amit mérlegelhetsz.
De én valószínűleg Task-ként futtatnám a webservert. A te esetedben nyilván az volt a "baj", hogy a WebHost.RunAsync() metódus által visszaadott Task-ot azonnal awaitelni akartad a fő száladon, így a fő programszál nekiállt async várakozni a Task elkészültére, ami ugye egy szervernél amíg le nem állítják nem fog megtörténni.
Ha a fő programszálad amúgy sem lép ki magától akkor szerintem a a WebHost.RunAsync() által visszaadott Task-ot sem kell nekiállnod awaitelni benne (ha tudod, hogy exception történt akkor érdemes) ettől függetlenül a viszakapott Task refernciáját nyilván elmented, hiszen ezen keresztül mindig tudod ellenőrizni az állapotát és szükség szerint awaitelve ki is tudod belőle szedni az esetleges exceptiont.
A fenti példában például a Console.ReadKey() blokkolja a fő szálat. Amíg a fő szál nem ért véget, addig a background threadeket (beleértve amelyek Task-ba vannak csomagolva) a runtime nem zárja be addiíg amíg azok nem fejezik be maguktól a futást.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- TCL LCD és LED TV-k
- 5.1, 7.1 és gamer fejhallgatók
- Arc Raiders
- Kuponkunyeráló
- Apple iPhone 17 Pro Max – fennsík
- Kompatibilis lett az Android Quick Share és az Apple AirDrop
- Torrent meghívó kunyeráló
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Hobby rádiós topik
- VHS digitalizálás
- További aktív témák...
- ASUS ROG STRIX G17 (2022) gamer laptop
- AMD Ryzen 5 9600X box, közel 3 év garival !!
- X1 Carbon 9th 14" FHD+ IPS érintő i7-1185G7 16GB 512GB NVMe magyar vbill ujjlolv IR kam gar
- ÚJ Apple Macbook Air 13,6 M4 10C CPU/8C GPU/16GB/256GB - Égkék - Magyar - 2 Ciklus - 3 év garancia
- P14s Gen5 14" FHD+ IPS Ryzen 7 PRO 8840HS Radeon 780M 16GB 512GB NVMe magyar vbill ujjolv gar
- GYÖNYÖRŰ iPhone 11 Pro 64GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS3565, 100% Akkumulátor
- BESZÁMÍTÁS! 8TB Western Digital Red Plus SATA HDD meghajtó garanciával hibátlan működéssel
- Gamer PC-Számítógép! Csere-Beszámítás! Ryzen 7 3700X / RTX 2070 Super / 32GB DDR4
- BESZÁMÍTÁS! MSI B550M R7 5800X 32GB DDR4 512GB SSD RTX 3070 8GB FSP CMT510 Cooler Master 750W
- Gamer PC-Számítógép! Csere-Beszámítás! I7 12700E / RTX 3060Ti / 32GB DDR4 / 512GB Nvme SSD
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest


