Microsoft.Zing.ZingExplorerDelayBoundedSampling.RandomBackTrackAndDelay C# (CSharp) Méthode

RandomBackTrackAndDelay() protected méthode

protected RandomBackTrackAndDelay ( Stack searchStack, int startPoint ) : int
searchStack Stack
startPoint int
Résultat int
        protected int RandomBackTrackAndDelay(Stack<TraversalInfo> searchStack, int startPoint)
        {
            //back track the stack randomly to some point
            var backtrackAt = ZingerUtilities.rand.Next(startPoint, searchStack.Count() + 1);
            while (searchStack.Count() > backtrackAt)
            {
                searchStack.Pop();
            }
            //delay the schedule
            var delayedState = searchStack.Peek().GetDelayedSuccessor();

            if (delayedState == null)
            {
                return -1;
            }

            TerminalState terminal = delayedState as TerminalState;
            if (terminal != null)
            {
                if (terminal.IsErroneousTI)
                {
                    lock (SafetyErrors)
                    {
                        SafetyErrors.Add(delayedState.GenerateNonCompactTrace());
                        this.lastErrorFound = delayedState.ErrorCode;
                    }

                    if (ZingerConfiguration.StopOnError)
                    {
                        //Stop all tasks
                        CancelTokenZingExplorer.Cancel(true);
                        throw delayedState.Exception;
                    }
                }
                return -1;
            }
            //push it on stack
            searchStack.Push(delayedState);

            return searchStack.Count();
        }