A módszer az alvási () - verem túlcsordulás az orosz

Üdvözöljük a lenyűgöző világába UI-programozás! Meg kell tanulniuk egy pár: ez nem így van, mivel a parancssoros programokat. Itt minden háttér kapcsolatos feladatokat a felület nem azonnal jelentkeznek, amint azt a parancsot, és megszakítva a munkát. Mindez zajlik egy fix áramlás, az úgynevezett UI-szál.







Mi folyik a kódot?

  1. Akkor zár UI-stream fél másodpercig, majd állítsa be a gomb szövegét. Ez egy belső jelzőt állít a grafikus könyvtár, ami azt mondja: „ha a szabad idő, meg kell frissíteni a gombot».
  2. Akkor azonnal ismét blokkolja a UI-stream fél másodpercig, majd helyezze vissza a szöveg gombra. Mivel a „szabad idő” (más néven «tétlen hurok») nem történt meg, a szöveg nem lehet frissíteni. Emellett abban az időben a zár nincs egy kezelni az eseményeket az egér és a billentyűzet (mert az UI-szál foglalt alvás „om), hogy a program úgy néz ki, nem válaszol.
  3. Akkor a szöveg a gombot újra, ez nem változtat semmit, mint egy zászló azt jelzi, hogy frissíteni kell, már felhúzta.
  4. És így tovább, 11-szer.
  5. A végén, amikor a ciklus véget ért, az UI-áramot végre felszabadult, és teheti a változtatásokat. Végre látni 0.






Mi a probléma? Nem szabad, hogy a hosszú műveleteket az UI-szál. Thread.sleep - az egyik ilyen művelet, de sokkal több, és a fájlok olvasásához betöltött adatokat a hálózaton, vagy az adatbázis eléréséhez. Jogod van munkaterhelés UI-patak csak néhány milliszekundum. Időtartamára hosszadalmas művelet fut a UI-szál alkalmazás úgy tűnik, hogy lógni, és rakodók UI-esemény nem nevezhető. Ez a viselkedés a program azonnal kiderül, hogy egy diák kézműves.

Frissítse a UI, a reakció az egér dolgozza át ellenőrzés - minden történik az UI-szál, amikor a patak nincs másképp foglalkozik. Egy jó program a UI legyen eseményvezérelt, ahelyett kötelező: nem kéne irányítani a program során, de csak reagálni az eseményekre, a rövid idejű processzorok.

Mi a teendő? Kétféle módon. Egy egyszerű módja, hogy alkalmas-e az Ön: ne takarja el a UI-szál, és használja az időzítőt, hogy megy az UI-könyvtár. Ő hívja a felvezető a megfelelő időben, akkor meg ott a gomb szövegét, és a feldolgozás vége. így felengedi a UI-patak, úgy, hogy frissíti a felhasználói felületen.

Nehéz úton, amely használja, ha valóban kell indítani egy hosszadalmas művelet. Ebben az esetben, akkor hozzon létre egy külön szál (thread), és amelyben a kívánt műveletet. Az eredmények a munkát végzel a megfelelő időben, hogy küldjön egy UI-patak, amely egyszerűen frissítheti a UI. Figyeljük meg, hogy ebben az esetben a programozás sokkal nehezebb lesz, ahogy van, hogy vigyázzon a szinkronizációs zárak és kommunikáció a szálak (a globális változó nem gurul). De a te esetedben ez túl sok, elég lesz az egyszerű időzítő.




Kapcsolódó cikkek