C#-ban hogyan oldható meg, hogy várjon a függvény, amíg a lista nem üres?
Hogyan oldható meg C#-ban, hogy egy függvény megvárja, míg a foreach kiüríti a listát?
Például egy gombnyomás eseményre meghívja a függvényt, de mivel számításigényes/sokáig tart a művelet, ezért mire a listát kiürítené, már jöhet egy második gombnyomás.
Szinte biztos vagyok benne, hogy szálkezeléssel, vagy aszinkronos függvényhívással kellene megoldani, de nem teljesen tiszta a dolog.
List<string> lista = new List<string>();
public void Fgv()
{
foreach (...)
{
...
}
}
foreach eleve nem ürítheti a listát.
Mindenesetre thread safety, semafore, locking, ezek a kulcsszavaid.
nem elég neked egy sima if?
if(lista.Count > 0) {
}
#3:
ha 1 gombról van szó ami mindig ugyanazt a függvényt hívja meg, ami üríti a listát, akkor igen
#5:
kivéve, ha simán ellenőrzi egy feltétellel, hogy ha a lista üres másodjára már nem fut bele az ürítésbe, az ürítési folyamat csak 1x indul el
én csináltam már hasonlót lock nélkül és egy sima IF-el megoldottam ezt, hogy csak egyszer indulhatott el, persze ott még a lista counton kívül volt 1 bool is ami figyelte, hogy indul e
nem is kell multi-thread itt
neked meg arról sincs fingod mikor kell új szálat indítani :D
Minden egyes gui gomb nyomáskor egy új thread indul az eventhandlerben. Ha kétszer nyom a gombra simán előfordulhat, hogy az első handler még nem végzett, mikor a második elindul. Ha nincs locking elkezdhetnek egyszerre dolgozni ugyanazon a listán, jön is majd az exception.
Neked meg több tanulást, kevesebb arcot. Mindkettő jót fog tenni.
#1: A foreach nem az ürítendő lista elemein megy végig. Köszi a kulcsszavakat
Az if-es példát megértettem köszönöm, viszont nekem mindenképpen meg kell hívni majd a ciklust, amint üres lesz a lista (feltéve, hogy jött ugye az esemény/gombnyomás).
Esetleg tudtok mutatni egy példát a szálkezeléses megoldásra is?
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!