08. maj 2013 - 23:00Der er
3 kommentarer og 1 løsning
Kald funktion i specifik tråd
Jeg arbejder på at program der kommunikerer på en COMport. Jeg arbejde kun i mere end én tråd, når dataRecieved-evented er triggered, så jeg vil spørge, om det i stedet for at rode frem og tilbage mellem threads, er muligt at sende data til, og kalde en funktion, som man tvinger til at køre i UI-tråden, så jeg er fri for at lave delegates for hvergang jeg skal manipulere med forms?
Heh... Det er vel mere eller mindre det man gør i en delegate. Jeg skal bare lave det jeg vil lave i funktionen jeg vil kalde, i delen hvor jeg afgør om der skal invokes eller ej - går jeg da ud fra.
Hmm... Jeg fik måske lige sagt ok lidt for hurtigt. Det er et meget lille program, som fungerer som et simpelt interface til en analysator. Jeg sender 4-8 bytes gennem en seriel port, og får et svar på 3-12 bytes. Svaret deler jeg lidt op i ACK/NAK, fejlkode, ETX/STX, [data], [ETX], og [BCC], alt efter hvordan svaret er bygget op. Ud fra de data, opdaterer jeg enkelte dele (1-2 controls pr. svar) af en meget lille form. Så når jeg får svaret, kalder jeg en funktion til at vurdere hvad der skal opdateres, og så bliver elementerne opdateret gennem en invoke. Der er stort set ingen belastning ud over opdatering af UI-form, så tanken er at det er nemmere/hurtigere/pænere bare at kalde den lille funktion fra DataReceived eventet i UI-tråden, som alligevel laver en stor del af dens arbejde i UI-tråden. Selv hvis jeg skulle lave databehandling på event-tråden, ville jeg nu gerne have viden til at kalde en anden funktion på UI-tråden, som man så kan sende de behandlede data, og ud fra dem, opdatere de nødvendige dele af UI'en, uden at skulle lave et hav af invokes.
Jeg skal helt sikkert lære at arbejde i tråde, da jeg agter at lave større programmer i fremtiden, men det her er til praktisk brug, og alle de 'unødige' kald frem og tilbage mellem tråde, virker bare som et farligt rod, som giver unødigt mange fejlkilder, lige nu.
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.