Pārlūkot izejas kodu

修正任务数量等于1时,不删除最后的完成任务。

scbc.sat2 5 gadi atpakaļ
vecāks
revīzija
685813ff0d
1 mainītis faili ar 5 papildinājumiem un 6 dzēšanām
  1. 5 6
      SATService/SATService/SATExecutor.cpp

+ 5 - 6
SATService/SATService/SATExecutor.cpp

@@ -70,10 +70,6 @@ SATHTTP::STTask* CSATExecutor::GetFreeTask()
 void CSATExecutor::DelFinishedTask()
 {
 	AutoThreadSection ats(&m_csTask);
-	// 任务数量小于等于1时,不删除完成的任务;
-	if ( m_vtTask.size() <= 1)
-		return;
-
 	std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
 	for ( ; it != m_vtTask.end(); it++ ) {
 		// 状态为2的完成任务;
@@ -95,7 +91,8 @@ void CSATExecutor::DelFinishedTask()
 			GLOBAL::WriteTextLog(GLOBAL::SAT_EXE, "\n<===============================================>\n"
 				"end.删除已完成任务:%s\n<===============================================>\n", it->Job.strUniqueId.c_str());
 			// 删除任务;
-			m_vtTask.erase(it);
+			if ( m_vtTask.size() > 1 )
+				m_vtTask.erase(it);
 			break;
 		}
 	}
@@ -1221,13 +1218,15 @@ DWORD CSATExecutor::HearbeatThread(LPVOID lpVoid)
 					}
 
 					that->m_vtTask.push_back(*it);
-
+					
 					// 通知SAT服务器,脚本开始执行;
 					// 待开发:同时将任务存储到数据库中;
 					/*
 					db process
 					*/
 				}
+				// 进行一次删除操作;
+				that->DelFinishedTask();
 			}
 		}