09. april 2003 - 07:19Der er
21 kommentarer og 1 løsning
Spørgs mål ang tråde
Jeg har en funktion i min GUI som laver en søgning som kan tage op til 2-3 min, mens denne funkrion søger er min GUI låst. Jeg kunne godt tænke mig at få det lavet så der i guien heletiden bliver opdateret med resultater, og samtid at den ikke er låst så man evt. kan stoppe søgningen igen. her havde jeg taænkt at man måske skulle bruge tråde, men hvordan laver jeg dette? Jeg har en GUI, en Controller og en Klasse der laver søgningen.
Ja vil det ikke hjælpe at lave Klassen der laver søgningen som en tråd, som så bare videre giver resultaterne til GUI efterhånden som de bliver fundet. Er der nogle problemmer med det umildbart? Og så kan jeg ikke huske hvordan jeg laver den tråd.
Hvis jeg har en reference til GUI kan jeg vil bare skrive når tingene er fundet. eks. første post fundt GUI.vispost(/et eller andet/); Anden post fundet GUI.vispost(/et eller andet/); OSV.
Nu har jeg fåetlavet søgningen i en tråd, og min GUI bliver også opdateret med resultater fra søgningen (nogen af dem). Men min GUI er stadig låst jeg kan ikke stoppe søgningen med en knap. Hvad kan der være galt?
Jeg har en controller (MVC) som opretter GUI, Søg(er en tråd) og Data som er et object til at få de fundne resultaterne over i GUI (Obesrver mønstret).
Jeg ved ikke om du kan konkludere noget af dette, ellers må jeg prøve at specificere det nærmere.
SøgeTråd st = new Søgetråd(kriterie,data); st.setPriority(Thread.NORM_PRIORITY-2); st.run();
Den sender et data object med til søgetråden. I dette data object skriver jeg hvergang der er fundet en post, da data objectet nedarver Obeservable, og GUI er tilmeldt data objectet (observer) får den besked hvergang der skrevet i data objectet, og kan derefter hente den nye værdi i data objectet. Og alt dette virker fint, jeg kan bare ikke trykke på nogen knapper mens der søges.
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.