void Unsubscribe() { if (m_unsubscriber != null) { m_unsubscriber.Dispose(); m_unsubscriber = null; } if (m_signal != null) { m_signal.Dispose(); m_signal = null; } if (m_line != null) { m_line.Dispose(); m_line = null; } }
public void SetParameters(params IndParameter[] parameters) { if (parameters[0] == "Fast" && parameters[1] == "Slow" && parameters[2] == "Signal") { if (m_nf != parameters[0] || m_ns != parameters[1] || m_nsg != parameters[2]) { Unsubscribe(); m_nf = parameters[0]; m_ns = parameters[1]; m_nsg = parameters[2]; } } if (parameters[0] == "Start") { IndParameter indexParamater = parameters.FirstOrDefault(p => p == "Index"); IndParameter priorityParamater = parameters.FirstOrDefault(p => p == "Priority"); if (indexParamater.Value != null) { m_line = new IndLine(m_manager, m_token, m_nf, m_ns, indexParamater); } else { m_line = new IndLine(m_manager, m_token, m_nf, m_ns, -1); } m_signal = new IndSignal(m_manager, m_line.Token, m_nsg); if (priorityParamater.Value != null) { m_unsubscriber = m_manager.AddTemporalObserver(this, m_signal.Token, null, priorityParamater); } else { m_unsubscriber = m_manager.AddTemporalObserver(this, m_signal.Token); } } }