From 4543e4b5b42db1c4a6d51b4519e686eb391381ba Mon Sep 17 00:00:00 2001 From: roeter Date: Sat, 21 Jan 2023 13:32:56 +0100 Subject: [PATCH] Add watchdog ping to Train Processing --- .../Simulation/Timetables/ProcessTimetable.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Source/Orts.Simulation/Simulation/Timetables/ProcessTimetable.cs b/Source/Orts.Simulation/Simulation/Timetables/ProcessTimetable.cs index c6b72beb5d..213d043b50 100644 --- a/Source/Orts.Simulation/Simulation/Timetables/ProcessTimetable.cs +++ b/Source/Orts.Simulation/Simulation/Timetables/ProcessTimetable.cs @@ -148,7 +148,7 @@ public List ProcessTimetable(string[] arguments, CancellationToken canc // reduce trainlist using player train info and parameters bool addPathNoLoadFailure; - trainList = BuildAITrains(trainInfoList, playerTrain, arguments, out addPathNoLoadFailure); + trainList = BuildAITrains(cancellation, trainInfoList, playerTrain, arguments, out addPathNoLoadFailure); if (!addPathNoLoadFailure) loadPathNoFailure = false; // set references (required to process commands) @@ -752,13 +752,15 @@ private TTTrainInfo GetPlayerTrain(ref List allTrains, string[] arg /// /// /// - private List BuildAITrains(List allTrains, TTTrainInfo playerTrain, string[] arguments, out bool allPathsLoaded) + private List BuildAITrains(CancellationToken cancellation, List allTrains, TTTrainInfo playerTrain, string[] arguments, out bool allPathsLoaded) { allPathsLoaded = true; List trainList = new List(); foreach (TTTrainInfo reqTrain in allTrains) { + if (cancellation.IsCancellationRequested) continue; // ping watchdog token + // create train route if (TrainRouteXRef.ContainsKey(reqTrain.Index) && Paths.ContainsKey(TrainRouteXRef[reqTrain.Index])) {