Leggo nella documentazione che il metodo Sleep() ferma l'esecuzione dell'intero programma e non del solo thread nel quale viene invocato. E' corretto?
E' possibile mandare in pausa in thread per n secondi senza che l'intero programma si arresti?
Leggo nella documentazione che il metodo Sleep() ferma l'esecuzione dell'intero programma e non del solo thread nel quale viene invocato. E' corretto?
E' possibile mandare in pausa in thread per n secondi senza che l'intero programma si arresti?
No, non è corretto: la chiamata a Sleep pone in pausa il thread corrente che la chiama, tant'è che molto spesso si usa invocare la procedura all'interno di quei thread che rimangono a lungo in esecuzione, compiendo dei cicli, magari per valutare quando eseguire una determinata azione a fronte del raggiungimento di un orario o di un'altra condizione, per quanto sia più indicato - se possibile - invocare le funzioni API Wait... per legare l'attesa alla disponibilità di un oggetto specifico.Originariamente inviato da denis76
Leggo nella documentazione che il metodo Sleep() ferma l'esecuzione dell'intero programma e non del solo thread nel quale viene invocato. E' corretto?
E' possibile mandare in pausa in thread per n secondi senza che l'intero programma si arresti?
Comunque sia, Sleep pone in attesa il thread chiamante. E' ovvio che se invochi la procedura all'interno dell'evento OnClick di un pulsante, ad esempio, il thread che viene messo in attesa è quello principale dell'applicazione, che fornisce il contesto nel quale è stato invocato l'evento citato.
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Associato a questo problema ho un secondo problema da risolvere:
Un Thread invoca una funzione contenuta in una cerca classe. Il tempo impiegato dal thread per la completa esecuzione di tale funzione non è prevedibile.
Ad un certo punto un secondo thread deve poter terminare il primo thread anche se esso non è riuscito a concludere la procedura. Come posso fare?
Tutto dipende da ciò che costituisce l'operazione dalla durata imprevedibile.Originariamente inviato da denis76
Un Thread invoca una funzione contenuta in una cerca classe. Il tempo impiegato dal thread per la completa esecuzione di tale funzione non è prevedibile.
Ad un certo punto un secondo thread deve poter terminare il primo thread anche se esso non è riuscito a concludere la procedura. Come posso fare?
Di cosa si tratta?
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...