2012-02-20 14 views
13

Se si crea un'applicazione VCL di base ed eseguita, alcuni thread sono in esecuzione. Quali sono i singoli thread e possono essere nominati per semplificare il debug delle applicazioni multi-thread?Quali sono gli altri thread in un'applicazione VCL predefinita e possono essere denominati per scopo?

Provo a denominare tutti i thread figlio e sarebbe utile nel debug per avere un'idea chiara di ciò che ogni thread figlio sta facendo durante la visualizzazione della finestra di debug dello stato del thread. (E se uno non è chiamato sarebbe un suggerimento per rintracciarlo e farlo chiamare.)

+3

Un'applicazione Delphi di base ha un singolo thread, a meno che non lo si esegua nell'IDE (il debugger li avvia). I thread aggiuntivi appartengono all'IDE e/o Windows stesso. –

+3

@Ken Questo non è vero nell'ultima delphi. –

+1

Lo vedo; Non l'avevo prima. :) Grazie. –

risposta

14

Una semplice applicazione VCL a 32 bit in vaniglia in XE2, in esecuzione su Windows 7 a 64 bit ha 3 thread. Il thread principale e due extra. I due thread aggiuntivi vengono creati in TApplication.CreateHandle tramite una chiamata a WTSRegisterSessionNotification. Se si desidera nominarli, è possibile enumerare lo threads in the process e chiamare NameThreadForDebugging.

Nella mia esperienza, è molto difficile tenere traccia di tutti i thread nella tua app. Non appena la tua app diventa moderatamente complessa, è probabile che ci siano molti thread che vanno e vengono. Personalmente considero quelli che non ho nominato come responsabilità di qualcun altro!

+7

+1 _ Personalmente vedo quelli che non ho nominato come responsabilità di qualcun altro! _ – NGLN

+6

Tuttavia, quando non si nomina il proprio, si perdono rapidamente nella melma. Quindi l'altra regola che suggerisco è il contrario; Se è mio, è meglio che lo chiami o si perderà nella melma. Se il debugger delphi potesse anche SUGGERIMENTI su cosa fa il thread, o anche menzionare il contesto del nome dell'unità Delphi in cui questo thread è apparso per la prima volta, sarebbe di grande aiuto per me. –

Problemi correlati