Avatar billede dk_zerocool Nybegynder
03. september 2006 - 22:05 Der er 1 kommentar og
1 løsning

Problem med delegater og tråde

Jeg har et problem som jeg håber I kan hjælpe mig med herinde:

Jeg har en alm. C# winform som jeg kører min brugergrænseflade i, og fra denne form kalder jeg, efter tryk på en knap, en klasse x. I klassen x starter jeg 2 tråde op som henholdsvis skriver og læser fra min com-port. I mit tilfælde vil jeg så gerne have brugergrænsefladen opdateret løbende med informationer omkring hvor mange data jeg har modtaget fra com-porten. Dette gør jeg ved hjælp af et delegat.

Hvis jeg bare kalder klassen x uden brug af tråde (en simpel for-løkke med en Thread.Sleep indlagt) får jeg fint min brugergrænseflade opdateret, men så snart jeg forsøger at opdaterer brugergrænsefladen i en af mine 2 tråde så sker der ikke noget.

Er det nogen herinde som har haft et lignende problem og som ved hvad man kan gøre?
Avatar billede driis Nybegynder
03. september 2006 - 23:03 #1
Alt der har med UI skal gøres i UI tråden. Måden at gøre det på, er ved at se på Control.InvokeRequired på den kontrol du vil modificere. Hvis den er true, skal du bruge Control.Invoke til at få kørt noget kode i UI trådens kontekst.

(Eller, på en anden måde sørge for at koden der modificerer UI kører på den rigtige tråd Men ovenstående er den anbefalede måde, som man typisk gør det på)

Jeg vil anbefale dig at slå Control.Invoke op på MSDN for mere information om, hvorfor den er nødvendig og hvordan den bruges.
Avatar billede segato Nybegynder
04. september 2006 - 10:40 #2
Hvis du kører .NET 2.0 vil jeg anbefale dig følgende metode.

DinKontrol.Invoke((MethodInvoker)delegate()
{
DinKontrol.SetText = "ål¨åplå";
DinKontrol.UpdateNogetAndet("ål¨åplå");
}
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester