Du brauchst doch nur das Programm im Debugger starten und dann in der Wartezeit auf Pause zu drücken. Dann schaust du nach, was der erste Thread in der Liste gerade tut. Das musst du ggf. ein paarmal wiederholen, falls das nicht gleich eindeutig ist.
Viele Komponenten heißt aber auch viele Benachrichtigungen usw., die da geschickt werden. Das kann schon dauern.
Hab ich schon probiert, ich lande immer wieder woanders, weil so viele Threads laufen
Mein Idee wäre eher sowas wie sich in den TComponent.Destroy zu hängen.
Und dann quasi Zeit merken, inherited Destroy aufrufen, Dauer berechnen, ausgeben.
Ich meine mich auch zu entsinnen, dass ich mal irgendwo über einen solchen Code gestolpert bin, wie man sich in eine Methode hängt.
Leider finde ich nichts passendes bei Google.