Bonjour, je vous demande un peu d'aide car j'ai un problème concernant les threads.
Je crée un thread pour mettre à jour un pointeur de structure. Le bug est que ceux-ci m'impose de me servir d'une fonction de type statique ce qui m'empèche de me servir des attributs de ma classe CCultureAuto. Sachant que ces attributs ne sont autres que les structures pointées.
Voici le code du thread :
Voici la définition de ma classe :
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 UINT CCultureAuto::MaJConsigne(LPVOID pParam) { periode* cons = (periode*) pParam; cons = &Germination; while(1) { if(cons->date_lim <= CTime::GetCurrentTime()) { cons = &Croissance; } else if (cons->date_lim <= CTime::GetCurrentTime()) { cons = &Floraison; } else if (cons->date_lim <= CTime::GetCurrentTime()) { return 0; } } } void CCultureAuto::LancerTacheMaJ() { tacheMaJ = AfxBeginThread(MaJConsigne, (LPVOID) consignes); } void CCultureAuto::KillTacheMaJ() { tacheMaJ->SuspendThread(); delete tacheMaJ; }
Et un petit screenshot du volet "Classview" de Visual :
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 #include"structure.h" class CCultureAuto { private: void CalculDateLim(); periode* Germination; periode* Croissance; periode* Floraison; periode* consignes; CWinThread* tacheMaJ; public: void KillTacheMaJ(); void LancerTacheMaJ(); static UINT MaJConsigne(LPVOID); CCultureAuto(); ~CCultureAuto(); void InitConsignes(CString,CString); };
A noter que je travaille sous Visual C++6.0 avec les MFC.
Je vous remerci d'avance pour votre aide.
Partager