c # - Forfriskende Windows Forms kontrollerer mellem handlinger i en 'for' loop

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et problem, som jeg ikke vil arbejde med multithreaded applikationer, da jeg tester nogle kode, og jeg har brug for det enkelt gevind.


Det opdaterer tekstboksen først efter at det er gjort. Jeg skal på en eller anden måde holde den opdateret hele tiden. Er der en anden vej undtagen med en anden tråd?

Bedste reference


Du kan prøve følgende:


// in for loop
tbxMyTextBox.Text = "New text!";
tbxMyTextBox.Refresh();


Jeg husker at skulle gøre noget lignende i fortiden.

Andre referencer 1



  Det opdaterer tekstboksen først efter at det er gjort. Jeg skal på en eller anden måde holde den opdateret hele tiden. Er der en anden måde at forvente med en anden tråd?



Der er ikke en god metode til at gøre dette. Problemet er, at hvis du udfører kode på brugergrænsefladen, kan brugergrænsefladen ikke behandle meddelelserne i meddelelsespumpen, herunder dem der måde at opdatere tekstboksen på, indtil dit arbejde er færdigt.


I Windows Forms kan du tvinge programmet til at behandle disse meddelelser ved at ringe Application.DoEvents (), men det er virkelig en dårlig, dårlig ide. Det er meget bedre (og sikrere!) At bruge en BackgroundWorker eller en anden multithreadsteknik til at skubbe arbejdet ind i baggrundstråden i stedet. [3]