c# - How to restart a windows service after an unhandled exception occurs -


i have console application ftp server. console application works fine. now, want run ftp server using windows service.

i have unhandled exception trapper traps unhandled exception. after exception occurs, want stop service, destruct class ftp server, delay 10 seconds , restart service.

following code (the ftp server , service works fine if there no unhandled exception want stop , restart service. code stops service fine doesn't restart it). ideas?

public partial class ftpservice : servicebase {     private static ftpserver _ftpserver;     public ftpservice(string[] args)     {         initializecomponent();           string eventsourcename = "ftp server events";          eventlog1 = new system.diagnostics.eventlog();          string logname = "ftp server log";          if (args.count() > 0)         {             eventsourcename = args[0];         }          if (args.count() > 1)         {             logname = args[1];         }           eventlog1 = new system.diagnostics.eventlog();          if (!system.diagnostics.eventlog.sourceexists(eventsourcename))         {             system.diagnostics.eventlog.createeventsource(eventsourcename, logname);           }           eventlog1.source = eventsourcename;          eventlog1.log = logname;          if (!system.diagnostics.eventlog.sourceexists("ftp server events"))         {             system.diagnostics.eventlog.createeventsource(                 "ftp server events", "ftp server log");         }          this.servicename = "ftp service";          this.autolog = true;     }      public static void main(string[] args)     {         servicebase.run(new ftpservice(new string[0]));     }      protected override void onstart(string[] args)     {         base.onstart(args);          var database = new database(); // gets database details ftp server tals database.         var configurationmanager = new configurationmanagerwrapper(); // same above          _ftpserver = new ftpserver(new assemblies.ftp.filesystem.standardfilesystemclassfactory(database, configurationmanager));         _ftpserver.start(); //starts service (ftp server works fine if there no handled exception)          eventlog1.writeentry("started");          ftpservermessagehandler.message += messagehandler_message;          appdomain.currentdomain.unhandledexception += unhandledexceptiontrapper;      }      protected override void onstop()     {         _ftpserver.stop(); // calls destructor ftp server, close tcp listening connections, etc         base.onstop(); // here stop service itself.         eventlog1.writeentry("stopped");         thread.sleep(10000);     }      protected void unhandledexceptiontrapper(object sender, unhandledexceptioneventargs e) // unhandled exception handler     {         eventlog1.writeentry(e.exceptionobject.tostring());         thread.sleep(5000);         onstop(); // calls onstop  stops ftp server , destroys previous objects of ftp server          var servicemgr = new servicecontroller();         servicemgr.start(); // here want restart service (it doesn't work)     }   } 


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -