Logisk set vil det ikke virke, da du kun har en tråd ... når du så sætter den til at lave noget andet, så opdateret UI ik.
Der er mange løsninger på det. Kører jobet tæt på UI, kan du som 2Mida skriver, bruge DoEvents, det gør at der bliver givet noget tid til UI'en for at den kan opdatere.
Alternativt er at starte en ny tråd ... og køre dit job i den, så du ikke belaster UI tråden. Vær dog opmærksom på Cross Thread Violation. Søg efter det herinde, da det har været oppe at vende 1000 gange før hvordan du opdatere UI fra en anden tråd.
Jeg vil lige afprøve det i den virkelige applikation. Hvis doevents virker, er der vel ingen grund til at lave en ny tråd? I modsat fald vil jeg prøve at blive klogere på tråde.
Jeg har afprøvet doEvents i applikationen, og det virker - under de betingelser, jeg nu havde.
I forvejen er der en progressbar, der opdateres. Klarer progressbar'en det i en egen thread, eller hvad?
Jeg tænker også: Er det virkelig nødvendigt at lave en thead for at få opdateret én label undervejs - det kan ikke tage mange cpu-kræfter - og c# foregiver at være et højniveau sprog, der selv tager sig af de banale opgaver?
Spørgsmålene mere for at få en bedre forståelse af, hvilke overvejelser, der ligger bag din anbefaling.
Men en hele GUI er frosset indtil en metode der udføres i event tråden er færdig.
Derfor skal der kun udføres timg som går meget hurtigt i event tråden.
Hvis man har noget som tager længere tid (men ikke nødvendigvis CPU tid, fordi det er lige så galt at bare at vente), så bør man starte en separat tråd.
Application DoEvents er et hack. Det virker næsten altid. Men næsten altid er ikke det samme som altid. Google linksene vil fortælle noget om hvorfor.
- doevents virker for mig, og jeg kan leve med "næsten altid" for nu
- buzzzz siger "logisk set vil det ikke virke og arne_v siger "hele GUI er frosset". Det passer ikke - progressbar'en opdateres jo - hvordan den virker ved jeg ikke
Har du prøvet at flytte dit vindue rundt mens den opdatere ... ? Det er hvad jeg mener med fryser, og helt sikkert også hvad Arne_v mener.
:-)
Jeg har ingen ide om hvorfor Label ikke opdatere ... men Progess baren gør ... min eneste tanke må være måden den er implementeret på.
mvh
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.