예제 #1
0
        public void Stop(DataParams paramsValue)
        {
            try
            {
                try
                {
                    DataParams localParamsValue = new DataParams();
                    foreach (DataParam param in _localParams)
                    {
                        localParamsValue.Add(param);
                    }

                    if (paramsValue != null)
                    {
                        foreach (DataParam param in paramsValue)
                        {
                            localParamsValue.Add(param);
                        }
                    }

                    for (int index = ProcessLocals.Count - 1; index >= 0; index--)
                    {
                        ProcessLocals[index].Value = _stack.Pop();
                        _serverProcess.AddProcessLocal(ProcessLocals[index]);
                    }

                    for (int index = localParamsValue.Count - 1; index >= 0; index--)
                    {
                        object tempValue = _stack.Pop();
                        if (localParamsValue[index].Modifier != Modifier.In)
                        {
                            localParamsValue[index].Value = tempValue;
                        }
                    }
                }
                finally
                {
                    _serverProcess.PopExecutingProgram(this);
                }
            }
            finally
            {
                _stack.PopWindow();
            }
        }