/// <summary>
        /// Startet eine Überwachung.
        /// </summary>
        /// <param name="graph">Die zugehörige Empfangsinstanz.</param>
        /// <param name="services">Die Liste der Dienste.</param>
        /// <param name="processor">Der Verarbeitungsalgorithmus.</param>
        public static void Start(DataGraph graph, SourceIdentifier[] services, Func <PMT, bool, bool> processor)
        {
            // Validate
            if (graph == null)
            {
                throw new ArgumentNullException("graph");
            }
            if (processor == null)
            {
                throw new ArgumentNullException("processor");
            }

            // Nothing to do
            if (services == null)
            {
                return;
            }

            // Create scope and process
            var sequencer = new PMTSequencer(graph, services, processor);

            // Nothing to do
            if (sequencer.m_services.Length < 1)
            {
                return;
            }

            // Install watch dog
            sequencer.ProcessNext(null);
        }
        /// <summary>
        /// Startet eine Überwachung.
        /// </summary>
        /// <param name="graph">Die zugehörige Empfangsinstanz.</param>
        /// <param name="services">Die Liste der Dienste.</param>
        /// <param name="processor">Der Verarbeitungsalgorithmus.</param>
        public static void Start( DataGraph graph, SourceIdentifier[] services, Func<PMT, bool, bool> processor )
        {
            // Validate
            if (graph == null)
                throw new ArgumentNullException( "graph" );
            if (processor == null)
                throw new ArgumentNullException( "processor" );

            // Nothing to do
            if (services == null)
                return;

            // Create scope and process
            var sequencer = new PMTSequencer( graph, services, processor );

            // Nothing to do
            if (sequencer.m_services.Length < 1)
                return;

            // Install watch dog
            sequencer.ProcessNext( null );
        }
 /// <summary>
 /// Erstellt eine neue Überwachung der Nutzdatenströme.
 /// </summary>
 /// <param name="processor">Der Verarbeitungsalgorithmus.</param>
 /// <param name="services">Die Liste der Dienste.</param>
 public void ActivatePMTWatchDog(Func <EPG.Tables.PMT, bool, bool> processor, params SourceIdentifier[] services)
 {
     // Forward
     PMTSequencer.Start(this, services, processor);
 }