Varför besvarar jag alltid mina egna inlägg?!? =)
I alla fall: för er som vill lära av mina dumma misstag så kommer lösningen.
calcPi har en loop som snurrar ugefär 1000 varv för att man ska hinna se vad som händer (då har jag ingen riktig uträkning av siffrorna, utan dummy-värden).
Dessa 1000 varv tar inte många sekunder, men de betyder dock att ett anrop tillbaka till UI-tråden görs 1000 + 1 gånger. Detta för att uppdatera en progressBar i GUIt.
Min slutsats är att så fort jag anropar calcPi, och innan UI-tråden hinner till "MessageBox.show...." så spottar calcPi-tråden ut första eventet som kräver en uppdatering av progressbar. När UI-tråden är färdig med detta så har calcPi producerat minst 1, kanske 1000 nya events som måste processas.
UI-tråden hinner alltså inte gå vidare förrän hela loopen är klar.
Detta fungerar i exempelkoden för att den har en tyngre beräkning av pi, och således hinner man uppdatera processbar innan nästa processbar-event kommer in.
Min lösning: Thread.sleep(100); i calcPi
Men då har jag en annan fundering:
UI-kommer inte processa Paint-event om man kör långa beräkningar direkt i UI-tråden, tydligen för att den först vill ta hand om button_click-eventet, vilket kan ta lång tid om man utför beräkningar. För att slippa en "vit ruta" om man skulle täcka över GUIt å sen visa det igen så kör man ju separata trådar...
Nu till frågan:
Varför processar den eventen som jag nämner ovan innan den slutför button_click-eventet? Är det för att eventen skapats som en konsekvens av knapptryckningen?
Jag förväntar mig egentligen inget svar på detta. Jag bara flummar å skriver vad jag tänker =P