winforms - Opdatering af Windows-formularpanel med fremdriftsmeddelelse under udførelse

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at vise fremskridtene i min Windows formular ansøgning i et panel i formularen. Alle meddelelser vises dog sammen i slutningen af, hvornår applikationen fuldføres. Er der en måde at vise meddelelserne som kode - udførelse 'fremskridt' gennem disse meddelelser - ligesom den ville på et fortolket sprog?


PS: Jeg tilføjer beskeden som en etiket kontrol til panelet på forskellige punkter i koden.


Tak skal du have.

Bedste reference


Eller det kan være værd at bruge en backgroundWorker (eller en anden tråd). Hvad der sker nu er, at hovedtråden (den der også tegner brugergrænsefladen) er for travl med at gøre forarbejdningen for at opdatere brugergrænsefladen.


Jeg er ikke sikker på hvilket sprog du bruger, men jeg antager C #. Opret i så fald en BackgroundWorker, der rapporterer fremskridt. Ring til baggrundsarbejderen asynkront, så det gør behandlingen, og brug rapporten Reports\_Progress til at indstille etiketten. Du kan ikke angive etiketten i den vigtigste Baggrundsarbejder do\_work procedure siden etiketten blev oprettet af en anden tråd. Se dette eksempel, det kan hjælpe (ganske vist sætter han en fremgangsværdi, men du kan lige så nemt sætte etikettekst - http://www.dotnetperls.com/progressbar)[2]


Hvis du ikke har Backgroundworker-klassen, kan du implementere den samme logik, bare ved hjælp af en anden tråd.


Hvis du har brug for mere info, så lad mig vide.

Andre referencer 1


Du skal ugyldiggøre etiketten hver gang du ændrer meddelelsen:


label1.Text = "Initializing...";
label1.Refresh();

// Do Stuff

label1.Text = "Working...";
label1.Refresh();

// Do Stuff

label1.Text = "Completed.";
label1.Refresh();