public void TryRemoveParameter(string sessionId, IMacroParameter param) { try { lock (m_Lock) { if (m_Parameters.TryGetValue(sessionId, out List <IMacroParameter> paramsStack)) { paramsStack.Remove(param); if (!paramsStack.Any()) { m_Parameters.Remove(sessionId); } } } } catch (COMException) { throw; } catch (Exception ex) { throw new COMException(ex.Message, ex.InnerException); } }
public IMacroResult Run(object appDisp, string macroPath, string moduleName, string subName, int opts, IMacroParameter param, bool cacheReg = false) { var app = CastApplication(appDisp); var macro = app.OpenMacro(macroPath); GetMacroParametersManager(true, out RotRegister newReg, out IMacroParameterManager macroParamsMgr); if (newReg != null) { if (cacheReg) { if (m_Register != null) { try { m_Register.Dispose(); } catch (Exception ex) { m_Logger.Log(ex); } } m_Register = newReg; } } try { var sessionId = CreateMacroSessionId(app, macro); macroParamsMgr.PushParameter(sessionId, param); try { macro.Run(new MacroEntryPoint(moduleName, subName), (MacroRunOptions_e)opts); } finally { macroParamsMgr.TryRemoveParameter(sessionId, param); } } finally { if (newReg != null && !cacheReg) { newReg.Dispose(); } } return(param.Result); }
public void PushParameter(string sessionId, IMacroParameter param) { lock (m_Lock) { if (!m_Parameters.TryGetValue(sessionId, out List <IMacroParameter> paramsStack)) { paramsStack = new List <IMacroParameter>(); m_Parameters.Add(sessionId, paramsStack); } paramsStack.Add(param); } }
public void TryRemoveParameter(string sessionId, IMacroParameter param) { lock (m_Lock) { if (m_Parameters.TryGetValue(sessionId, out List <IMacroParameter> paramsStack)) { paramsStack.Remove(param); if (!paramsStack.Any()) { m_Parameters.Remove(sessionId); } } } }
public void PushParameter(string sessionId, IMacroParameter param) { try { lock (m_Lock) { if (!m_Parameters.TryGetValue(sessionId, out List <IMacroParameter> paramsStack)) { paramsStack = new List <IMacroParameter>(); m_Parameters.Add(sessionId, paramsStack); } paramsStack.Add(param); } } catch (COMException) { throw; } catch (Exception ex) { throw new COMException(ex.Message, ex.InnerException); } }