1) Dans un objet dérivé de TThread j'ai une propriété qui initialise une variable membre privée. Cette propriété, écrite par l'application principale, est cycliquement regardée dans le Exécute() du thread pour en faire quelque chose. Y a t-il des précautions particulières à prendre pour l'accès a cette variable ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 //***** FICHIER .H *********************************** #ifndef Unit2H #define Unit2H #include <Classes.hpp> class MonThread : public TThread { private: AnsiString FBuffer; protected: void __fastcall Execute(); public: __fastcall MonThread(bool CreateSuspended); __property AnsiString Buffer = { read = FBuffer, write = FBuffer}; }; #endif //***** FICHIER .CPP ********************************* #include "Unit2.h" #pragma package(smart_init) __fastcall MonThread::MonThread(bool CreateSuspended) : TThread(CreateSuspended) { } void __fastcall MonThread::Execute() { //---- Placer le code du thread ici ---- while(! Terminated) { Sleep(100); // Ici Faire quelque chose avec FBuffer } }
2) Lorsque l'application principale appelle une méthode d'un objet dérivé de TThread, cette méthode est-elle appelée dans le contexte du thread principal ou dans celui du thread courant ?
3) Si depuis Execute() de l'objet Thread, j'appelle une fonction du thread principal via Synchronize(), la dite fonction peut-elle appeler à son tour sans pb une méthode de ce même l'objet Thread ?
Merci d'avance pour votre aide.
Partager