Avatar billede complier Nybegynder
20. juni 2001 - 12:49 Der er 10 kommentarer og
1 løsning

En ekstra tråd i delphi

Jeg har en App. der med jævne mellemrum, tjekker en rækker servere ned NMFinger.
Det tager jo sin tid, og låser hele programmet mens det udføres, hvordan får jeg det til at køre i en tråd ?

Har kikke lidt på de spms der er besvaret, men hjælper ikke så meget.


Altså Timer1Timer skal starte en tråd.

Trådens indhold skal jeg selv kunne ændre, men det er primært pings / Finger.
Avatar billede cms Nybegynder
20. juni 2001 - 13:01 #1
Åbn din app.
Tryk File | New...
Vælg Thread.
Giv den et passende navn.
Tryk OK.

I Execute-proceduren skriver du så fx
Synchronize(Finger)

du tilføjer en method til thread-classen, der hedder Finger.
Tilføj til den noget kode, der kalder NMFinger-componenten.

I Timer1Timer skriver du noget àla (hvis altså thread-classen hedder TMyThread:
begin
  with TMyThread.Create(true) do
    FreeOnTerminate := True;
end;
Avatar billede cms Nybegynder
20. juni 2001 - 13:02 #2
håber det var hvad du spurgte om...
Avatar billede complier Nybegynder
20. juni 2001 - 13:10 #3
prøver om lidt, skal lige boote.

men forstår ikke helt de to linjer her ...

du tilføjer en method til thread-classen, der hedder Finger.
Tilføj til den noget kode, der kalder NMFinger-componenten.
Avatar billede complier Nybegynder
20. juni 2001 - 13:30 #4
Ok, har gjort det hele nu, den siger i Unit1 at memotid (min thread) ikke er defineret.

Hvad skal jeg skirve som definition ?
Avatar billede complier Nybegynder
20. juni 2001 - 14:38 #5
Så er den defineret også !
Et problem, jeg kan jo ikke havde uses Unitx i begge, da det danner en circle, hvad gør jeg så ?
Avatar billede cms Nybegynder
20. juni 2001 - 21:03 #6
stort set hver gang du kommer ud for en circular unit reference kan du med fordel flytte ét af uses-statements\'ne ned under implementation, i stedet for under interface.
Altså, hvis du fx i interface-delen af MemoTidThreadUnitet deklarerer \'Unit1\' i din uses-clause, kan du sikkert flytte denne ned til uses-clausen i implementation-delen. Dette burde ikke resultere i nogen circular unit reference
Avatar billede complier Nybegynder
20. juni 2001 - 22:21 #7
Virker ikke, har du en email så kan jeg sende kilden ?
Avatar billede complier Nybegynder
20. juni 2001 - 22:21 #8
Altså har lavet et lille, test først inden jeg ligger det i selve systemet ...
Avatar billede cms Nybegynder
21. juni 2001 - 13:54 #9
yes, cnt@cnt.dk
Avatar billede cms Nybegynder
22. juni 2001 - 10:58 #10
Der skal selvfølgelig stå:

  with memotid.Create(true) do
  begin
    FreeOnTerminate := True;
    Resume;
  end;
Avatar billede complier Nybegynder
22. juni 2001 - 11:37 #11
Virker fint, takker
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