public void Stop()
 {
     if (!started)
     {
         return;
     }
     TempSpooler.Stop();
     //listen changes should be changed before removing secure printers
     MyDLPEP.PrinterUtils.listenChanges = false;
     RemoveLocalSecurePrinters();
     started = false;
 }
        public void Start()
        {
            if (started)
            {
                return;
            }
            PrinterPrefix         = Configuration.PrinterPrefix;
            printerPermissions    = new Dictionary <string, string>();
            spooledNativePrinters = new ArrayList();

            if (CheckAndInstallPortMonitor())
            {
                if (CheckAndInstallXPSDriver())
                {
                    //Correct incase of an improper shutdown
                    RemoveLocalSecurePrinters();
                    if (TempSpooler.Start())
                    {
                        Thread changeListeningThread = new Thread(new ThreadStart(MyDLPEP.PrinterUtils.StartBlockingLocalChangeListener));
                        changeListeningThread.Start();
                        started = true;
                        Configuration.GetLoggedOnUser();
                        HandlePrinterConnectionChange();
                        InstallLocalSecurePrinters();
                    }
                    else
                    {
                        MyDLPEP.PrinterUtils.listenChanges = false;
                        RemoveLocalSecurePrinters();
                    }
                }
            }

            if (!started)
            {
                SvcController.StartService("Spooler", 5000);
            }
        }