|
@@ -71,8 +71,16 @@ bool CSATExecutor::IsTaskExist(SATHTTP::STTask &task)
|
|
|
|
|
|
// 再将任务添加入队列;
|
|
|
if ( _tcsicmp(task.taskInfo.strTaskType.c_str(), "3") != 0 ) {
|
|
|
+ bool bExsit = false;
|
|
|
+ AutoThreadSection ats(&m_csTask);
|
|
|
+ for ( std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin(); it != m_vtTask.end(); it++ ) {
|
|
|
+ if ( it->taskInfo.nInstanceId == task.taskInfo.nInstanceId )
|
|
|
+ bExsit = true;
|
|
|
+ }
|
|
|
+
|
|
|
// 被中止的任务不入队;
|
|
|
- m_vtSmokingTask.push_back(task);
|
|
|
+ if ( !bExsit )
|
|
|
+ m_vtSmokingTask.push_back(task);
|
|
|
}
|
|
|
|
|
|
return true;
|
|
@@ -80,6 +88,7 @@ bool CSATExecutor::IsTaskExist(SATHTTP::STTask &task)
|
|
|
|
|
|
// 实时任务;
|
|
|
bool found = false;
|
|
|
+ AutoThreadSection ats(&m_csTask);
|
|
|
std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
|
|
|
for ( ; it != m_vtTask.end(); it++ ) {
|
|
|
// 不要使用nTaskId,这个值没啥用;//不要使用Id这个值,如果任务被停止会变更;
|
|
@@ -134,6 +143,7 @@ void CSATExecutor::DownloadTask(SATHTTP::STTask &task)
|
|
|
|
|
|
SATHTTP::STTask* CSATExecutor::IsThereATaskInProcess()
|
|
|
{
|
|
|
+ AutoThreadSection ats(&m_csTask);
|
|
|
std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
|
|
|
for ( ; it != m_vtTask.end(); it++ ) {
|
|
|
// 执行中的任务;
|
|
@@ -147,6 +157,7 @@ SATHTTP::STTask* CSATExecutor::IsThereATaskInProcess()
|
|
|
|
|
|
SATHTTP::STTask* CSATExecutor::GetFreeTask()
|
|
|
{
|
|
|
+ AutoThreadSection ats(&m_csTask);
|
|
|
std::list<SATHTTP::STTask>::iterator it = m_vtTask.begin();
|
|
|
for ( ; it != m_vtTask.end(); it++ ) {
|
|
|
// 未执行的任务;
|