07. marts 2001 - 16:19Der er
12 kommentarer og 1 løsning
Threads + MDI
Jeg har en MDI applikation, som består af en parentform, med menuer osv. og nogle childforms. I en af disse childforms skal man kunne sætte en række variabler, som der til sidst skal køres nogle udregninger på. Det skal være muligt at kører flere af disse udregninger sideløbende, dvs. med forskellige variabler. Når man opretter de forskellige childs hentes nogle standard værdier i en Access DB. Alle variabler hentes ind i en record, og ændres de gemmes variablerne i recorden. Mit problem er, at de forskellige childs kører på den samme record. Jeg har prøvet at oprette de forskellige childs i hver deres tråd, men på en eller anden måde konflikter de alligevel!
Mit spørgsmål er om der er nogen som har udviklet en mdi applikation hvor hver child kører i sin egen tråd? Eller har nogle ider eller information om hvordan man skal få det til at spille ordentlig???
hvis n tråde skal tilgå den SAMME record skal du implemtere gensidig udelukkelse på den record, således der ikke er flere tråde der skriver samtitigt ...
det har jeg prøvet uden held! Det skulle måske lige nævnes, at på hver child ligger der en del frames hvori de forskellige variabler ændres. Disse skal jo også bruge recorden. Jeg erklærede recorden i min parentform. Og i childform.create bliver recorden sat til en global variabel i childformen! Men det burde vel heller ikke give problemer, når de enkelte childs kører i hver deres tråd????
//ThreadExample written for Borland Community as an example for multi-threading with //the standard window functions and synchronizing with the VCL through messages.
Der var ikke rigtig noget i det jeg kunne bruge! Det er et meget godt eksempel på hvordan man bruger criticalsection, men det er ikke lige det jeg har brug for.
Nå \"LogoOle\" jeg var ellers sikker på at i \"var til\" DataFlex og BTreive derude i Silkeborg :-)
Hvis du har flere tråde der accesser databaser så skal du \"under normale omstændigheder\" har en separat TSession til hver af disse. Dog skriver du ikke hvordan (via hvad) du får fat i din Access database.
Envidere KAN DU IKKE lave \"en mdi applikation hvor hver child kører i sin egen tråd? \". Hele brugerinterfacet køre ALTID via VCL i programmets \"hovedtråd\". Når du således skal opdatere skærmen (dine MDI-forms) fra dine tråde så skal dette foregå med \"Syncronize\". Den eneste undtagelse til denne regel er hvis du opdatere direkte ved at skrive til Canvas\'en hvor denne har en Lock/Unlock der sikre at kun en tråd kan opdatere den af gangen.
Uden af kende dit program. Vil jeg gætte på at \"den rigtige måde\" ville være at lade hver MDI form starte en tråd der \"laver det der skal laves\" og så opdatere \"ejer MDI-formen\" via syncronize.
Pelle
PS: Bare spørg Lene, Flemming eller Jørgen om jeg ved hvad jeg snakker om :-)
Nye tider... Nye muligheder... Nye udviklingsprogrammer og databaser :-)
Fandt selv ud af det... Det var slet ikke nødvendigt at bruge tråde.... Det var en fejl i erklæringen af mine variabler, som gjorde at data recorden blev delt mellem mine childs!
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.