Avatar billede hugopedersen Nybegynder
02. september 2010 - 21:05 Der er 4 kommentarer og
2 løsninger

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/q/Delphi-1595/2009/3/Problem-Thread-Waitfor-1.htm 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?
Avatar billede arne_v Ekspert
03. september 2010 - 04:21 #1
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/od/kbthread/a/thread-gui.htm

har lidt forklaring.
Avatar billede hrc Mester
03. september 2010 - 10:11 #2
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...
Avatar billede hrc Mester
03. september 2010 - 10:12 #3
Du bruger allerede Synchronize, i stedet for den message-version jeg engang foreslog. Alt burde være fint.
Avatar billede hugopedersen Nybegynder
03. september 2010 - 11:42 #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.
Avatar billede hrc Mester
03. september 2010 - 15:55 #5
Svar
Avatar billede arne_v Ekspert
04. september 2010 - 00:12 #6
.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester