|  | @@ -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++ ) {
 | 
	
		
			
				|  |  |  		// 未执行的任务;
 |