Kezdőoldal » Számítástechnika » Programozás » C# Programba új ablakot...

Palidy kérdése:

C# Programba új ablakot nyitok, az új szálon fog futni?

Figyelt kérdés

Az érdekelne, hogyha megnyitok C#-ban egy új ablakot az adott

programon belül, azt a C# illetve a futtatókörnyezet automatikusan új

szálon nyitja meg vagy ugyanazon a szálon fog futni mint a főablak?


2011. okt. 15. 23:04
 1/4 _Jessy_ ***** válasza:
Valószínűleg igen. Debuggerben tudod nézni közben a szálakat...
2011. okt. 16. 18:22
Hasznos számodra ez a válasz?
 2/4 anonim ***** válasza:

Az attól függ, hogyan nyitsz új ablakot.

Ha a főablak valamelyik eseménykezelőjében csinálsz egy másik Form példányt, és azt mondod neki, hogy Show, vagy ShowDialog, akkor az ugyanazon a szálon fog futni, mint a főablak, mivel a főablak eseménykezelőjében hoztad létre, az eseménykezelő függvények pedig a főablak szálán futnak(inkább jobb megfogalmazás lenne az, hogy az alkalmazás fő szálán, amiben a message loop van).

Magyarul ezek az ablakok egy szálon osztoznak.

A Show és a ShowDialog között a különbség az, hogy a Show nem blokkolja a hívó szálat, és nem tiltja le a többi formot, így a fő szál message loop-ja tovább tud futni.

De természetesen a fő szál message loop-ja fogja kezelni az összes ablakhoz érkező üzeneteket, így nem tud két különböző formon két eseménykezelő parallel módon futni.


A ShowDialog ezzel szemben blokkolja a hívó szálat, letiltja a többi formot, emiatt viszont szüksége van egy saját message loop-ra(mivel az eredetit ugye blokkolta), hogy fel tudja dolgozni az üzeneteket(gyakorlatilag átveszi arra az időre az eredeti message loop szerepét, amíg be nem záródik, ezért is van az, hogy hiába van letiltva a főform, a paint eseménye pl. ugyanúgy lefut, mint addig).


Mindez persze nem jelenti azt, hogy nem lehet olyan alkalmazást csinálni, ami több UI szálat is futtat(több szál, mindegyik saját message loop-al), a lényeg az, hogy az új szálon ShowDialog-gal kell kirakni a Formot, mert Show esetén nem lesz message loop, és rögtön be is záródik, a futtató szál pedig véget ér.

2011. okt. 16. 19:04
Hasznos számodra ez a válasz?
 3/4 anonim ***** válasza:
új szálon jön létre, esetleg a (modális ablakok esetében) a fő-szál megvárhatja az új szál befejezését/ablak eltűnését
2011. okt. 17. 15:10
Hasznos számodra ez a válasz?
 4/4 anonim ***** válasza:
Ahogy a második válaszoló írta, nem fog új szálon futni ha csak simán Show vagy ShowDialog-gal hívod.
2011. okt. 17. 15:39
Hasznos számodra ez a válasz?

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!