Avatar billede ggxdg Nybegynder
08. maj 2013 - 23:00 Der 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?
Avatar billede ggxdg Nybegynder
08. maj 2013 - 23:41 #1
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.
Avatar billede arne_v Ekspert
09. maj 2013 - 02:02 #2
Invoke goer jo at "det" bliver koert i event traaden.

Men hvis du laver for meget i event traaden bliver UI ulidelig at bruge, saa jeg er ikke sikker paa at det er en god ide.

Og du kan jo bare Invoke med en lambda hver gang du skal opdatere UI.
Avatar billede arne_v Ekspert
30. juli 2013 - 04:56 #3
OK?
Avatar billede ggxdg Nybegynder
02. september 2013 - 11:45 #4
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.
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

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