Пример #1
0
        /// <summary>
        /// 立即结束本次调用
        /// </summary>
        /// <param name="svm">要作用的调用堆栈</param>
        public void ExitCall(StackMachine svm)
        {
            // 弹调用堆栈
            var consumed = svm.Consume();

            // 弹出的是主堆栈上的场景
            if (svm == this.CallStack && consumed.State == StackMachineState.Interpreting)
            {
                // 恢复到上一个并行栈帧的状态
                this.BackTraceParallel();
                // 关闭当前的信号量订阅者
                SemaphoreDispatcher.UnregisterSemaphoreService();
            }
        }