Megosztás a következőn keresztül:


A megszüntetési kezelő használata

Az alábbi példa bemutatja, hogyan történik a leállításkezelő használata az erőforrások felszabadításához, amikor egy védett kódtörzs végrehajtása leáll. Ebben az esetben egy szál az EnterCriticalSection függvénnyel várja meg a kritikus szakaszobjektum tulajdonjogát. Ha a szál befejezte a kritikus szakasz által védett kód végrehajtását, meg kell hívnia a LeaveCriticalSection függvényt, hogy a kritikus szakasz objektuma elérhető legyen más szálak számára. A megszüntetési kezelő használata garantálja, hogy ez megtörténik. További információ: kritikus szakaszobjektumok.

LPTSTR lpBuffer = NULL; 
CRITICAL_SECTION CriticalSection; 

// EnterCriticalSection synchronizes code with other threads. 
EnterCriticalSection(&CriticalSection); 
 
__try 
{ 
    // Perform a task that may cause an exception. 
    lpBuffer = (LPTSTR) LocalAlloc(LPTR, 10); 
    StringCchCopy(lpBuffer, 10, TEXT("Hello"));

    _tprintf(TEXT("%s\n"),lpBuffer); 
    LocalFree(lpBuffer); 
} 
__finally 
{ 
    // LeaveCriticalSection is called even if an exception occurred. 
    LeaveCriticalSection(&CriticalSection); 
}