فهرست منبع

服务退出:结束所有线程;

scbc.sat2 5 سال پیش
والد
کامیت
bdf0209f3d
2فایلهای تغییر یافته به همراه19 افزوده شده و 3 حذف شده
  1. 17 2
      SATService/SATService/SATExecutor.cpp
  2. 2 1
      SATService/SATService/SATService.cpp

+ 17 - 2
SATService/SATService/SATExecutor.cpp

@@ -518,6 +518,8 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 			stJobProcessReq.strResultState = "0";	// 脚本未执行完成;
 		else
 		{
+			if ( pCase->_nExecutionResult == SATHTTP::ABNORMAL )
+				stJobProcessReq.strFailedReason = "脚本异常结束";
 			stJobProcessReq.strResultState = "1";
 			// 同时标记任务失败;
 			pTask->_nExecutionResult = SATHTTP::FAIL;
@@ -561,8 +563,7 @@ bool CSATExecutor::ReportCaseFinish(SATHTTP::STTask* pTask, SATHTTP::STCase *pCa
 	stJobProcessReq.strStartTime = pCase->_strStartTime;
 	stJobProcessReq.strCrashNumber = "";
 	stJobProcessReq.strCaseName = pCase->strCaseName;
-	stJobProcessReq.strFailedReason = "";
-
+	
 	stJobProcessReq.strImgName = "";
 	stJobProcessReq.strCaseIndex = pCase->strIndex;
 	// 实例Id;
@@ -999,6 +1000,20 @@ void CSATExecutor::EndofWork()
 		CloseHandle(m_hEventExcuteScript);
 		m_hEventExcuteScript = NULL;
 	}
+
+	// 如果有脚本在执行,结束脚本;
+	CPythonExecutor *pExecutor = NULL;
+	for ( std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin(); it != m_vtTask.end(); it++ ) {
+		for ( std::vector<SATHTTP::STCase>::iterator _case = it->Job.vtCases.begin(); _case != it->Job.vtCases.end(); _case++ ) {
+			if ( (pExecutor = (CPythonExecutor *)_case->_pExcutor) ) {
+				pExecutor->EndThread();
+				delete pExecutor;
+				pExecutor = NULL;
+			}
+		}
+	}
+
+	m_vtTask.clear();
 }
 
 DWORD CSATExecutor::HearbeatThread(LPVOID lpVoid)

+ 2 - 1
SATService/SATService/SATService.cpp

@@ -39,7 +39,8 @@ void CALLBACK WorkEndof()
 	GLOBAL::WriteTextLog("SATService goto end");
 	CSATTCPServer::GetInstance()->Stop();
 	CSATTCPServer::GetInstance()->UnloadSocketLib();
-	CMainProcess::GetInstance()->EndofWork();
+	CSATDevices::GetInstance()->EndofWork();
+	CSATExecutor::GetInstance()->EndofWork();
 	GLOBAL::WriteTextLog("SATService work end!");
 }