dll中,在一个循环中使用CreateFile创建打开文件,当到6500个左右时候,程序直接退出,没有任何提示该循环是在一个线程中已经使用关闭函数。
这个dll是按 unicode 写的,在非unicode下正常for( )
{HANDLE hbmpFile = CreateFile(bmpFile, GENERIC_ALL, 0, NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if(hbmpFile== INVALID_HANDLE_VALUE)
{
m_logfile->AddText(GetLastError());
return FALSE;
}
//其他处理
if (NULL==CloseHandle(hbmpFile))
{
Msg(TEXT("CloseHandle failed"));
}}
当运行到6500次左右时候,不会提示任何错误,调用该dll的进程直接退出。
这个dll是按 unicode 写的,在非unicode下正常for( )
{HANDLE hbmpFile = CreateFile(bmpFile, GENERIC_ALL, 0, NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
if(hbmpFile== INVALID_HANDLE_VALUE)
{
m_logfile->AddText(GetLastError());
return FALSE;
}
//其他处理
if (NULL==CloseHandle(hbmpFile))
{
Msg(TEXT("CloseHandle failed"));
}}
当运行到6500次左右时候,不会提示任何错误,调用该dll的进程直接退出。
但是在 Debug 或者Release下正常谢谢大家
请帮忙
HANDLE hbmpFile = CreateFile(bmpFile, GENERIC_ALL, 0, NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); 在这一句前面加一个
m_logfile->AddText("11111111111111");HANDLE hbmpFile = CreateFile(bmpFile, GENERIC_ALL, 0, NULL, OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL);
后面加一个
m_logfile->AddText("222222222222");就会很清楚的看到这一句中CreateFile函数无声无息的退出了
因为在非unicode下一秒钟创建20个左右
可以连续运行一周都没有问题