Witojcie. Mam problem z użyciem w/w klasy w programie z kilkoma wątkami. Po prostu nie wiem gdzie (w głównym wątku? w każdym z osobna? globalnie? w klasie?) i jak użyć sekcji krytycznej w wątkach. :/
IMHO powinno to wyglądać np. tak:
- W wątku GŁÓWNYM tworzę globalny obiekt:
#include "SyncObjs.hpp"
TCriticalSection *CrSec;
CrSec = new TCriticalSection(); //to umieszczam przed wywolaniem wątku, np. w Button1Click(TObject*)
- W utworzonym wątku POBOCZNYM w sekcji Execute() umieszczam np. taki kod:
for (int i = 0; i < 50000; i++)
{
CrSec->Acquire();
Form1->Label1->Caption = i;
if (Terminated) Free();
CrSec->Release();
}
Ale po uruchomieniu progam się wyp****a gdy dojdzie do linijki "CrSec->Acquire();"
Jak temu zaradzić? Co robię źle? Google i fora nie zawierają odpowiedzi na mój problem. :/
EDIT:
Próbowałem też użyć "CrSec->Enter" zamiast Acquire itp - efekt ten sam. Błąd pojawia się już w pierwszym wejściu do pętli (i = 0):