Jeg kører et java program som scanner nogle porte og finder nogle clienter den kan tale med. For hver forbindelse oprettes der en ny tråd som bl.a. indeholder en brugergrænseflade for den forbindelse. Når en "samtale" startes med en client vil scanneren altid svare med det samme og afvente nye informationer fra clienten. Her står den så ved en readLine() fra en BufferedReader, og venter på et svar fra clienten.
Problemet er, at så længe der afventes et svar fryser alle andre brugergrænseflader end clienten. De opdateres ikke før hele samtalen er slut, eller forbindelsen afbrydes. Idéen er jo at scanneren skal kunne snakke med flere clienter ad gangen uden at de forstyrer hinanden. Er der en nem måde at gøre det på ? Måske en anden måde at læse, eller en form for prioritering eller noget ?
Hmm, nej jeg mener bare jeg opretter en ny grænseflade inde fra tråden. Jeg var ikke klar over at brugergrænsefladen skulle have sin egen tråd. Men det giver selvfølgelig meget god mening.
Det må jeg i vert fald afprøve så snart jeg har mulighed for det.
Til gengæld mener jeg nu også at selve brugergrænsefladen til den forbindelse som står og læser blev frosset. Jeg får ikke engang noget frem før hele samtalen er slut, og det virker lidt sært idet selve samtalen jo sender data til et felt i brugergrænsefladen, så man skulle da tro den ville blive opdateret. Men det kunne måske også skyldes at den ikke har sin egen tråd...
Det må jeg i vert fald lige afprøve. Det lyder somom det godt kunne være det der er galt.
Du havde helt ret, jeg skulle køre brugergrænsefladen som en tråd... Jeg havde rodet godt rundt i det, havde en tråd som kørte brugergrænsefladen.
Der var egentlig ikke behov for en tråd til socket forbindelsen, jeg lagde den bare ind i den tråd der kørte BGF'en for forbindelsen, og nu ser det ud til at køre ganske fint.
Hvis du skriver det som et svar kan jeg godkende det.
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.