Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error 1053 the service did not respond to the start or control request

I've written a Windows Service in C# that basically checks my db every minute for orders, generates a PDF from these orders, and emails it.

The logic works perfectly in my tests etc..

When i create the service, and install it using the setup project, when I go to start the service in the services mmc, I get:

error 1053 the service did not respond to the start or control request in a timely fashion

My OnStart method looks like this:

protected override void OnStart(string[] args) {     //writeToWindowsEventLog("Service started", EventLogEntryType.Information);     timer.Enabled = true; } 

Basically, just enables the timer... so theres no process intensive call there.

Where am I going wrong?

I've tried setting the startup account to local system, network service etc... nothing works!

Edit:

Here is my code: (processPurchaseOrders is the method where the db is queried and pdf's are generated etc...)

public partial class PurchaseOrderDispatcher : ServiceBase {     //this is the main timer of the service     private System.Timers.Timer timer;      public PurchaseOrderDispatcher()     {         InitializeComponent();     }      // The main entry point for the process     static void Main()     {       #if (!DEBUG)         ServiceBase[] ServicesToRun;         ServicesToRun = new ServiceBase[] { new PurchaseOrderDispatcher() };         ServiceBase.Run(ServicesToRun);       #else //debug code         PurchaseOrderDispatcher service = new PurchaseOrderDispatcher();         service.processPurchaseOrders();       #endif     }      private void InitializeComponent()     {         this.CanPauseAndContinue = true;         this.ServiceName = "Crocus_PurchaseOrderGenerator";     }      private void InitTimer()     {         timer = new System.Timers.Timer();          //wire up the timer event         timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);          //set timer interval         var timeInSeconds = Convert.ToInt32(ConfigurationManager.AppSettings["TimerIntervalInSeconds"]);         timer.Interval = (timeInSeconds * 1000); // timer.Interval is in milliseconds, so times above by 1000          timer.Enabled = true;     }      protected override void Dispose(bool disposing)     {         if (disposing && (components != null))             components.Dispose();          base.Dispose(disposing);     }      protected override void OnStart(string[] args)     {         //instantiate timer         Thread t = new Thread(new ThreadStart(this.InitTimer));         t.Start();     }      protected override void OnStop()     {         //turn off the timer.         timer.Enabled = false;     }      protected override void OnPause()     {         timer.Enabled = false;          base.OnPause();     }      protected override void OnContinue()     {         timer.Enabled = true;          base.OnContinue();     }      protected void timer_Elapsed(object sender, ElapsedEventArgs e)     {         processPurchaseOrders();     } } 
like image 342
Alex Avatar asked Nov 04 '09 12:11

Alex


People also ask

How do I fix error 1503?

1] Modify timeout settings via Windows Registry If an application happens not to respond within this time duration, Error 1503 will pop up. However, you can tweak these settings via registry to allow more time for applications to load on your computer. Here is how to do so: Press Windows+ R to open Run Command Box.


1 Answers

I just had the same problem.

It turned out it was because I was running it as a console in debug mode - like the code you have above

#if (!DEBUG)  #else //debug code  #endif 

And I had compiled it in debug mode and installed the service

When I compiled it in release mode it worked as expected

Hope this helps

like image 113
ChrisCa Avatar answered Sep 21 '22 21:09

ChrisCa