Verstehe ich das richtig, du willst deinen Thread laufen lassen und wenn er nach einer bestimmten Zeit noch nicht durchgelaufen ist, beenden?
Das machst du am besten in einem separaten Thread:
Delphi-Quellcode:
AndererThread.FreeOnTerminate := False;
WaitForSingleObject(AndererThread.Handle, DeinTimeout);
if not AndererThread.Terminated then
AndererThread.Terminate;
AndererThread.Free;
Ungetestet, aber so sollte es prinzipiell gehen