Problem sam uspio rjesiti upotrebom WaitForSingleObject i signalizacijom odgovarajuceg eventa.
Evo opisa sta sam htio postici:
Rijec je o MFC/ATL ActiveX objektu koji koristi vise thredova.
Sinhronizacija izmedju thredova je rijesena preko CRITICAL_SECTION objekata.
Do ovog dijela nista nije sporno.
Dio koji mi je sporan, je event mehanizam.
Kontrola sada koristi PostMessage da bi ubacila signal u message loop kontrole kada je vrijeme da se signalizira neki event.
Kao sto znamo PostMessage ne ceka na potvrdu vec odmah nastavlja izvrsenje programa (sto logika mog programa trenutno zahtijeva).
Problem koji se javio je kada testni program ne moze da obradi sve evente na vrijeme, a kontrola ima mnogo eventa za slanje (ovo nije realan scenarij, vec samo stress-test kontrole).
Primjer problema je kada sam u VB6 aplikaciji, u obradi eventa, izbacio MsgBox. Ostali event se nisu mogli obraditi i doslo je do pucanja test programa.
Test prorgam ne puca ako stavim neku vrstu sinhronizacjie poput CRITICAL_SECTION ali onda je cijeli event mahnizam zamrznut dok klijent ne vrati kontrolu.
Ovo mi se nije dopalo pa sam htio iskorisiti neki timeout mehanizam, odnosno da kotrola ipak nastavi sa radom nakon (5 sekundi) - pa sta bude bude :)
Mislio sam da CCriticalSection lock metoda moze koristiti wait timeout.
Pogrjesio sam sto nisam potrazio detaljnije objasnjenje Lock metode.
U svakom slucaju hvala svima na odgovorima.
Samo ne razumijem zasto su napravili overload metodu:
dwTimeout - Lock ignores this parameter value.
koja se ne moze koristiti?
[Ovu poruku je menjao ljube dana 08.10.2005. u 17:56 GMT+1]