使用终止处理程序

【勇芳软件工作室】汉化HomePreviousNext

以下示例显示了如何使用尝试 - 最后语句来确保在执行守卫的代码终止时释放资源。在这种情况下,线程使用EnterCriticalSection函数等待关键段对象的所有权。当线程完成执行受关键部分保护的代码时,它必须调用LeaveCriticalSection函数,使关键部分对象可用于其他线程。使用尝试 - 最后声明保证将会发生这种情况。

有关关键部分对象的更多信息,请参阅同步.

LPTSTR lpBuffer = NULL;

CRITICAL_SECTION csCriticalSection;

尝试{

// EnterCriticalSection同步代码

//与其他线程

EnterCriticalSection(&CriticalSection);

//执行可能导致异常的任务。

lpBuffer = (LPTSTR) LocalAlloc(LPTR, 10);

strcpy(lpBuffer,"Hello"); //可能的访问冲突

printf("%s\n",lpBuffer);

LocalFree(lpBuffer);

}

//即使调用了LeaveCriticalSection

//发生异常

最后{

LeaveCriticalSection(&CriticalSection);

}