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(); } }