03. september 2006 - 22:05Der 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?
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
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.
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.