Przeglądaj źródła

Fixed the blocking bug after one control job abort and restart.

sangwq 10 miesięcy temu
rodzic
commit
9e65346638
1 zmienionych plików z 27 dodań i 0 usunięć
  1. 27 0
      Venus/Venus_RT/Modules/SystemDispatcher.cs

+ 27 - 0
Venus/Venus_RT/Modules/SystemDispatcher.cs

@@ -1269,6 +1269,16 @@ namespace Venus_RT.Modules
 
             _faCallback.JobAborted(cj, GetFirstProcessJob(cj));
             _dbCallback.LotFinished(cj);
+
+            // remove control job 
+            var deletedPollingJobs = new Queue<ControlJobInfo>();
+            foreach (var item in _qePollingJobs)
+            {
+                if (cj.InnerId != item.InnerId)
+                    deletedPollingJobs.Enqueue(item);
+            }
+            _qePollingJobs = deletedPollingJobs;
+
             foreach (var pj in pjAbortList)
             {
                 _lstProcessJobs.Remove(pj);
@@ -1307,6 +1317,14 @@ namespace Venus_RT.Modules
             {
                 _loadportControlJobDic[cj.Module] = null;
             }
+
+            var deletedPollingJobs = new Queue<ControlJobInfo>();
+            foreach (var item in _qePollingJobs)
+            {
+                if (cj.InnerId != item.InnerId)
+                    deletedPollingJobs.Enqueue(item);
+            }
+            _qePollingJobs = deletedPollingJobs;
             return true;
         }
 
@@ -1348,9 +1366,18 @@ namespace Venus_RT.Modules
             }
             _faCallback.JobPaused(cj, GetFirstProcessJob(cj));
 
+            var deletedPollingJobs = new Queue<ControlJobInfo>();
+            foreach (var item in _qePollingJobs)
+            {
+                if (cj.InnerId != item.InnerId)
+                    deletedPollingJobs.Enqueue(item);
+            }
+            _qePollingJobs = deletedPollingJobs;
+
 
             if (!_lstControlJobs.Exists(job => job.State == EnumControlJobState.Executing))
                 _cycleState = RState.Paused;
+
             return true;
         }