使用终止处理程序

以下示例演示如何使用终止处理程序来确保在执行受保护的代码正文时释放资源。 在这种情况下,线程使用 EnterCriticalSection 函数等待关键节对象的所有权。 线程完成执行受关键节保护的代码后,它必须调用 LeaveCriticalSection 函数以使关键节对象可供其他线程使用。 使用终止处理程序可以保证发生这种情况。 有关详细信息,请参阅 关键节对象

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); 
}