Oprettet tor. d. 02. september 2010 kl. 21:05:02

hugopedersen
hugopedersen (16.457 point. Point ude: 160)
www.hugopedersen.dk

Har jeg begået en synd?

Jeg har et ur som jeg bruger i mange af mine programmer. Det vises på et panel i en statusbar på min mainform. Uret starter som en tråd og det kører egentlig ret godt.

Jeg sidder så og surfer på nettet i anden sammenhæng og læser så på http://en.allexperts.com/ (...) at det nærmest er at betragte som en dødssynd at opdatere en form fra en tråd.

Nu sidder lille jeg så og er smask forvirret. Skal jeg nu til at lave mit ellers godt fungerende ur om?

Skrevet fre. d. 03. september 2010 kl. 04:21:32| #1

arne_v
arne_v (1.005.623 point)
Problem stillingen kendes fra mange andre sprog og GUI frameworks.

Du kan enten leve med risikoen for problemer - og har du ikke observeret problemer endnu, så er den sikkert meget lille.

Eller du kan fixe det.

http://delphi.about.com/ (...)

har lidt forklaring.

Skrevet fre. d. 03. september 2010 kl. 10:11:03| #2

hrc
hrc (32.732 point)
Det er derfor jeg nogle gange vælger at opdatere med en message for så kommer opdateringen bare ind i en kø (som jeg antager er tråd-sikker).

At bruger synchronize har også sine ulemper men problemerne opstår nok kun når du har parallelle tråde som opdatere de samme komponenter eller du laver noget tidskritisk kommunikation via COM-porte eller ligende.

Desuden er det link du har lagt ved, for en stor del vrøvl. Selvfølgelig kan du ikke åbne en form i en tråd og selvfølgelig er VCL ikke 100% thread-safe, men det er sgu tæt på. Det er sjældent man ikke får et ordentligt resultat.

En sikker løsning til det simple at opdatere et ur, må være at bruge en TTimer. Troede egentlig det var en forklædt tråd, en det er det ikke. Det kan du gøre hvis du synes synden over at bruge en velfungerende tråd tynger dine skuldre...

Skrevet fre. d. 03. september 2010 kl. 10:12:41| #3

hrc
hrc (32.732 point)
Du bruger allerede Synchronize, i stedet for den message-version jeg engang foreslog. Alt burde være fint.

Skrevet fre. d. 03. september 2010 kl. 11:42:35| #4

Ja det er det ur du tidligere har 'haft fingrene i' HRC

Men smid nogle svar så jeg kan lukke med tak for input.

Skrevet fre. d. 03. september 2010 kl. 15:55:52| #5


Skrevet lør. d. 04. september 2010 kl. 00:12:04| #6


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Irriterende timeout i Delphi 7 på en win7 64 bits platform

Oprettet den 2. februar 2012 kl. 12.17
nca giver 60 point for svar | Giv et svar »

Manglende danske tegn

Oprettet den 24. januar 2012 kl. 16.12
hugopedersen giver 60 point for svar | Giv et svar »

Sikre mig at form er færdigoprettet

Oprettet den 24. januar 2012 kl. 10.01
hugopedersen giver 100 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger