|
@@ -133,10 +133,6 @@ DWORD CScriptExecutor::_LogExportThread(LPVOID lpParam)
|
|
|
} while (!that->m_bStopLogExport);
|
|
|
}
|
|
|
|
|
|
- // 关闭线程句柄;
|
|
|
- CloseHandle(that->m_hLogThread);
|
|
|
- that->m_hLogThread = NULL;
|
|
|
-
|
|
|
// 结束重定向;
|
|
|
that->EndSubprocessStdOut();
|
|
|
GLOBAL::WriteTextLog(_T("脚本日志线程结束,用例名=%s"), that->m_pCaseObj->strCaseName.c_str());
|
|
@@ -407,6 +403,11 @@ int CScriptExecutor::RunEmbeddedScript()
|
|
|
Sleep(2000);
|
|
|
// 结束日志线程;
|
|
|
m_bStopLogExport = TRUE;
|
|
|
+ // 同时需要关闭输出的管道,否则ReadFile会阻塞;
|
|
|
+ CloseHandle(m_hStdOutWrite);
|
|
|
+ m_hStdOutWrite = NULL;
|
|
|
+ CloseHandle(m_hStdErrorWrite);
|
|
|
+ m_hStdErrorWrite = NULL;
|
|
|
|
|
|
Py_DECREF(pResult);
|
|
|
|
|
@@ -468,6 +469,11 @@ int CScriptExecutor::RunScriptProcess()
|
|
|
GLOBAL::WriteTextLog("脚本进程结束(%ld)", m_pi.dwProcessId);
|
|
|
// 结束日志线程;
|
|
|
m_bStopLogExport = TRUE;
|
|
|
+ // 同时需要关闭输出的管道,否则ReadFile会阻塞;
|
|
|
+ CloseHandle(m_hStdOutWrite);
|
|
|
+ m_hStdOutWrite = NULL;
|
|
|
+ CloseHandle(m_hStdErrorWrite);
|
|
|
+ m_hStdErrorWrite = NULL;
|
|
|
|
|
|
// 关闭进程句柄.
|
|
|
CloseHandle(m_pi.hProcess);
|
|
@@ -625,6 +631,11 @@ int CScriptExecutor::ServiceRunScriptProcess()
|
|
|
// 关闭进程句柄.
|
|
|
CloseHandle(m_pi.hProcess);
|
|
|
CloseHandle(m_pi.hThread);
|
|
|
+ // 同时需要关闭输出的管道,否则ReadFile会阻塞;
|
|
|
+ CloseHandle(m_hStdOutWrite);
|
|
|
+ m_hStdOutWrite = NULL;
|
|
|
+ CloseHandle(m_hStdErrorWrite);
|
|
|
+ m_hStdErrorWrite = NULL;
|
|
|
|
|
|
// 重置;
|
|
|
memset(&m_si, 0, sizeof(m_si));
|
|
@@ -1043,12 +1054,11 @@ void CScriptExecutor::StopScript()
|
|
|
|
|
|
bool CScriptExecutor::IsScriptOver()
|
|
|
{
|
|
|
- if ( WaitForSingleObject(m_hLogThread, 0) == WAIT_OBJECT_0 )
|
|
|
+ if ( WaitForSingleObject(m_hLogThread, 0) == WAIT_OBJECT_0 && WaitForSingleObject(m_hWorkThread, 0) == WAIT_OBJECT_0)
|
|
|
{
|
|
|
- GLOBAL::WriteTextLog(_T("脚本(%s)已完成"), m_pCaseObj->strCaseName.c_str());
|
|
|
+ GLOBAL::WriteTextLog(_T("====>脚本(%s)已完成"), m_pCaseObj->strCaseName.c_str());
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- GLOBAL::WriteTextLog(_T("脚本(%s)未完成"), m_pCaseObj->strCaseName.c_str());
|
|
|
return false;
|
|
|
}
|