在一个线程中打开了文件file1执行一些操作,然后主线程在一段时期内超时,则利用CreateThread返回的HANDLE来TerminateThread,虽然可以操作成功,但之前打开的file1就无法再次打开了。类似地如何解决线程被意外终止时进行“善后”工作?
DWORD dwTimeout = 1000 * 30; //超时时间为:300s
if (WaitForSingleObject ( hThread, dwTimeout ) == WAIT_TIMEOUT )
{
TerminateThread(hThread,1);
try
{
if (m_File.m_hFile!=(UINT)CFile::hFileNull)
m_File.Close();
}
catch (CFileException* pEx)
{
pEx->Delete();
}
hThread = NULL;
}
现在的问题是即使m_File.m_hFile==(UINT)CFile::hFileNull,不能把文件正常关闭啊
DWORD dwTimeout = 1000 * 30; //超时时间为:300s
if (WaitForSingleObject ( hThread, dwTimeout ) == WAIT_TIMEOUT )
{
TerminateThread(hThread,1);
try
{
if (m_File.m_hFile!=(UINT)CFile::hFileNull)
m_File.Close();
}
catch (CFileException* pEx)
{
pEx->Delete();
}
hThread = NULL;
}
现在的问题是即使m_File.m_hFile==(UINT)CFile::hFileNull,不能把文件正常关闭啊
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货