コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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);
                }
            }
        }