Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| prog:lazarus:classes:tthread [23/04/2023 14:52] thierry [Sources & Ressources] | prog:lazarus:classes:tthread [23/04/2023 17:44] (Version actuelle) thierry [Appel depuis l'application] | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== TThread ====== | ====== TThread ====== | ||
| + | ===== Titre ===== | ||
| + | ==== Code du Thread ==== | ||
| + | |||
| + | <code delphi code du Thread> | ||
| + | { TMyThread } | ||
| + | procedure TMyThread.Execute; | ||
| + | begin | ||
| + | {... fait quelque chose dans un thread ...} | ||
| + | Synchronize(@SynchroEnum); // Appel une procedure synchronisée avec le thread principal | ||
| + | end; | ||
| + | |||
| + | |||
| + | procedure TMyThread.SynchroEnum; | ||
| + | begin | ||
| + | {... Fait quelque chose synchronisé avec le thread principal ...} | ||
| + | end; | ||
| + | |||
| + | constructor TMyThread.Create(CreateSuspended: boolean); | ||
| + | begin | ||
| + | FreeOnTerminate := True; | ||
| + | inherited Create(CreateSuspended); | ||
| + | end; | ||
| + | |||
| + | </code> | ||
| + | ==== Appel depuis l'application  ==== | ||
| + | <code delphi> | ||
| + | FThread := TMyThread.Create(True); // Create Suspended | ||
| + | FThread.OnTerminate:=@ReceptThreadTerminate; | ||
| + | FThread.Start; // et non pas Execute ! | ||
| + |  | ||
| + | </code> | ||
| + | ==== A Savoir... ==== | ||
| + | On appel pas directement ''Execute'' mais on démarre le Thread avec ''Start''. | ||
| + | |||
| + | On appel les méthodes "synchronisée" avec ''Synchronize(@MaProcedure)''. Donc il ne peut pas y avoir de paramètres a ces procédures... | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| ===== TThreadList : Partage de TList entre Threads ===== | ===== TThreadList : Partage de TList entre Threads ===== | ||
| Avec TThreadList -> [[https://www.freepascal.org/docs-html/rtl/classes/tthreadlist.html]] | Avec TThreadList -> [[https://www.freepascal.org/docs-html/rtl/classes/tthreadlist.html]] | ||