public void RemoveMonitor(ContextMonitor monitor)
        {
            monitor.Stop();

              monitors.Remove(monitor);
              threadsHT.Remove(monitor);

              if (monitors.Count == 0)
            monitorsStarted = false;
        }
        public void AddMonitor(ContextMonitor monitor)
        {
            ThreadStart monitorStart = new ThreadStart(monitor.Run);
              Thread monitorThread = new Thread(monitorStart);
              monitorThread.IsBackground = true;

              monitors.Add(monitor);
              threadsHT.Add(monitor, monitorThread);

              if (monitorsStarted)
            StartMonitor(monitor, monitorThread);
        }
 private void StartMonitor(ContextMonitor monitor, Thread thread)
 {
     monitor.Start();
       thread.Start();
 }