27. december 2005 - 12:41Der er
7 kommentarer og 1 løsning
Method eksekveres i forkert thread.
Hej Eksperter :)
Jeg sidder og roder med et lille program der via Socket.Receive modtager nogle kommandoer som skal eksekveres.
Her kommer problemet.
Jeg har et thread method som jeg har valgt at kalde ReceiveThread hvor den står og blokker via Socket.Receive Den står og modtager bytes og når der er kommet en "hel" kommando igennem skal den kalde et method jeg har valgt at kalde ProcessCommand
Det hele virker også meget fint. Men det giver en masse problemer at ProcessCommand bliver eksekveret med ReceiveThread'en og ikke min main thread.
Jeg har læst mig igennem en masse om events og delegates men systes ikke rigtigt jeg kan få løst mit problem.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Hvis det er GUI opdatering så skal du igang med noget Invoke.
Til alt andet burde det ikke gøre noget at det kører i receive tråden, bare du har en reference til det objekt som main tråden kører, så du kan bruge dens metoder.
Fandt så også lige ud af at en system.windows.forms.timer ikke kan køre uden en form og at system.threading.timer laver samme problem med at eksekvere method'sne i en anden thread.
Tja... Det ville ihvertfald gøre at jeg ikke fik advarslen. Men det laver ikke om på at funktionen køre i en anden thread.
Indtil vidre har jeg brugt min mainform's invoke til at køre den i main thread'en. Og jeg så kan løbe ind i at skal behandle nogle kommandoer inden formen er oprettet er så noget skidt.
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.