Setkal jste se někdo s tím, že vlákno "zhavaruje" bez jediné vyjímky? V aplikaci (přehrávání MJPEG streamu z IP kamery) mám dvě vlastní vlákna - v jednom běží nekonečná smyčka s GET požadavkem, druhé zpracovává a zobrazuje přijatá data. Nepředával jsem si mezi nimi data metodou vlákna Synchronize(), ale za použití TCriticalSection - měl jsem totiž za to, že je to ekvivalent k Synchronize. Nicméně problém se projevoval tak, že za určitých okolností (pohyb formuláře po ploše, přepnutí do jiné aplikace a zpět a pod.) se mi OBĚ vlákna sama ukončila (mám tam FreeOnTerminate := true). Prostě mi to bez jakékoliv hlášky skočilo do destruktoru vlákna (předpokládám, že se zavolala původní Terminate(), protože do "mojí" Terminate() mi to nevlezlo dříve, než do destruktoru).
Čili abych to zesumarizoval : dvě běžící vlákna se při předávání dat obě zhroutila, ale BEZ A/V nebo jiné vyjímky typické pro nesynchronizovanou výměnu dat. Pro úplnost, checkingy mám samozřejmě zapnuté všechny.
Setkal jste se s tím někdo? Je to normální? Po přesunutí výměny dat do Synchronize() problém, zdá se, zmizel. Pro informaci, ta výměna dat spočívala v zápisu a čtení AnsiStringu.