webForumDet fria alternativet

skriva till GUI från bakgrundstråd

5 svar · 375 visningar · startad av peterbladh

peterbladhMedlem sedan juni 2000277 inlägg
#1

Hej!

I .NET är de ju så att man måste göra en Control.Invoke för att uppdatera GUI't från en bakgrundstråd. Gör man inte det finns det risk för att konstigheter uppstår.
Är det samma sak i Java och i så fall hur gör man? Jag har provat att skriva till GUI't från en annan tråd än den som skapade det och det verkar fungera, men man vet ju aldrig...

Tack på förhand!
/peter

LimeMedlem sedan sep. 2001961 inlägg
#2

Jodå, det går utmärkt. Kolla på Model-View-Controller på t.ex. http://www.cs.wm.edu/~noonan/java/mvc/ och http://java.sun.com/blueprints/patterns/MVC-detailed.html

Går att göra samma sak i Java som i .NET att man från Controller-objektet anropar en metod i GUI-klassen (View) som uppdaterar grafiken. Ett exempel på detta är JList i Swing. Den kan ta en modell och en controller och ha dynamiska data.

peterbladhMedlem sedan juni 2000277 inlägg
#3

Hej o tack för ditt svar!

Är det nödvändigt att göra "control view" anropet?

LimeMedlem sedan sep. 2001961 inlägg
#4

Hur menar du?? Att control-objektet anropar den eller de view-objekt som skall uppdateras är en förutsättning för att dessa skall veta att det finns ny data i modellen.

peterbladhMedlem sedan juni 2000277 inlägg
#5

tja... jag försökte återgå till ursprungsfrågan: Kan man skriva till GUI tråden från en bakgrundstråd utan att problem uppstår?
/peter

LimeMedlem sedan sep. 2001961 inlägg
#6

JA!

Man inte bara kan, man bör... Om man gör något som ska t.ex. hämta data från en databas eller skriva en fetingfil så vill man inte att GUI:t skall låsa sig. Alltså lägger man själva uppgiften i en egen tråd och när denna sedan är klar så säger den till gui:t

Hela Swing-paketet är uppbyggt med den paradigmen.

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)