Probl�me de synchronisation
Bonjour
J'ai fait un serveur TCP avec le composant TidTCPServer dans une application FMX. Dans la m�thode ServeurExecute je lit les donn�es re�ues et j'en affiche une partie dans une liste box.
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 TForm1::ServeurExecute(TIdContext *AContext) {
TByteDynArray pInfo;
unsigned short data[32 * 25];
char chaine[256];
try {
AContext->Connection->IOHandler->ReadBytes(pInfo, 1856, false);
memcpy(chaine, &pInfo[0], 256);
memcpy(data, &pInfo[256], 32*25*2);
String rep = "";
int n = 0;
while (n < 256 && chaine[n] != 0) {
rep += chaine[n];
n++;
};
updateListe(rep);//rafraichissement de la liste
}
catch (const Exception& e) {
// AFAIRE
}
} |
Manifestement la fonction d'affichage ci dessous ne supporte pas d'�tre acc�d� par un thread. Car j'ai r�guli�rement des exceptions qui normalement n'ont pas lieu d'�tre
Code:
1 2 3 4 5 6
|
void __fastcall TForm1::updateListe(String rep) {
lbReseau->Items->Add(rep);
if (lbReseau->Items->Count > 10)
lbReseau->Items->Delete(0);
} |
Pour �viter cela, j'ai vu qu'il fallait que j'utilise la m�thode Synchronize mais je n'arrive pas � la mettre en oeuvre.
En effet j'ai voulu utiliser TIdThread.Synchronize mais il ne veux pas compiler cette ligne.
Code:
1 2
|
TIdThread::Synchronize((TThreadMethod)&updateListe(rep)); |
Voici l'erreur E2109 Ce n'est pas un type autoris�
Une id�e?