[Multithreading] MultiThreading et CheckSynchronize
Bonjour,
J'ai besoin de trapper l'�v�nement PortCharReceive de la classe TComPort et pour faire cela j'utilise la fonction CheckSynchronize depuis le thread principal.
J'essaye de faire la m�me chose depuis un autre thread et j'ai une erreur comme quoi on ne peut pas faire un CheckSynchronize depuis un autre thread que le thread principal.
Est ce que c'est par hasard possible d'appeler cette fonction depuis un autre thread que le thread principal ? (D'apr�s ce que j'ai vu c'est pas possible mais je pose la question � tout hasard)
Sinon deuxi�me question, est ce qu'il est possible de trapper un �v�nement windows depuis un thread qui n'est pas le thread principal ?
Merci
Utilisation de Synchronize
Bonjour,
Alors ce que je comptais faire c'est une classe d'acc�s au port com appel� DeviceAccess qui serait d�river de TThread
D�finition de la classe
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class DeviceAccess : public TThread
{
private:
GNModule* Module;
char* PLCFunction;
protected:
void __fastcall Execute();
void __fastcall ReadOnDevice();
public:
__fastcall DeviceAccess();
}; |
Et la fonction ReadOnDevice
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
void __fastcall DeviceAccess::ReadOnDevice()
{
Ecriture sur le port, avec réponse du device
while('Rien reçu sur le port com' && i<15)
{
j=0;
i++;
Application->ProcessMessages();
while(!CheckSynchronize(10) && j<5)
{
j++;
}
Sleep(100);
}
} |
Et dans la fonction Execute
Code:
1 2 3 4
| void __fastcall DeviceAccess::Execute()
{
Synchronize(&ReadOnDevice);
} |
De cette mani�re, si j'ai bien compris, l'�criture et la lecture sur le port com s'effectuerais depuis le thread principal. Est ce que c'est juste ?
Le probl�me que j'ai, c'est que je fais une DLL qui n'est pas de type VCL, j'utilise Borland Developper Studio 2006 et quand je compile, j'ai l'erreur :
[Lieur Erreur] Error: Externe '__tpdsc__ Classes::TThread' non r�solu r�f�renc� par C:\Projet1\DEVICEACCESS.OBJ
J'ai essay� de faire include de VCL.h et de Classes.hpp et �a ne marche pas mieux.
Est ce que quelqu'un sait si je dois faire un include pour que �a compile ?
Merci