[Delphi] Thread met time-out

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Is het mogelijk in Delphi dat je een stuk code of een thread een time-out geeft?
Dus dat bijvoorbeeld een thread niet langer dan 30 seconden mag werken. Doet hij dit wel dan terminate hij en freed hij zijn geheugen netjes (zodat er geen memleaks onstaan).

Of is de beste oplossing een timer die dit allemaal afhandeld?

Wie heeft hier een goede oplossing voor, of ervaringen?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • JapJap
  • Registratie: Maart 2001
  • Laatst online: 07-01 11:02
'k zou gewoon een timer in je thread opnemen, starten als de thread gestart wordt en bij de timeout de thread stoppen.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op dinsdag 20 november 2001 14:30 schreef JapJap het volgende:
'k zou gewoon een timer in je thread opnemen, starten als de thread gestart wordt en bij de timeout de thread stoppen.
Dat had ik dus ook als idee. Maar dan vraag ik me af hoe het zit met het geheugen. Kun je een thread gewoon terminaten? Ik wil namelijk geen memory leaks.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
En dan nog een vraagje.
Als ik een thread heb lopen en je sluit het programma, dan komt er een Exception. Hij moet dus of die thread terminaten (TThread.Terminate) of hij moet wachte (TThread.WaitFor). Maar hoe kom ik er achter of die thread nog loopt?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:04

Creepy

Tactical Espionage Splatterer

zet TThread.FreeOnTerminate op true, dan ruimt hij zichzelf op nadat je hem terminate. Zo niet.. dan niet :)

en met een if (assigned(threadvar) and not threadvar.terminated) kan je checken of een thread bestaat en nog niet aan het stoppen is.
(Oftewel de thread bestaat en loopt nog steeds)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Perfect, bedankt voor het antwoord.

Thread.FreeOnTerminate had ik al ingesteld.

"The shell stopped unexpectedly and Explorer.exe was restarted."

Pagina: 1