The ServiceBase class calls the OnStop method directly from the Service command handler that is defined in the ScDispatcherLoop of the Advapi32.dll file. After 30 seconds, if the ScDispatcherLoop thread is not ready to receive a new service command from the service control manager, Windows Service Controller marks the service as "time out." Therefore, you receive this error message.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section. This problem was first corrected in Microsoft .NET Framework 1.1 Service Pack 1.
I have also tried this:
Go to Start > Run > and type regedit
Navigate to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
With the control folder selected, right click in the pane on the right and select new DWORD Value
Name the new DWORD: ServicesPipeTimeout
Right-click ServicesPipeTimeout, and then click Modify
Click Decimal, type '180000', and then click OK
Restart the computer
The error is shown the second I try to start the service.
Click Start > Run, then type regedit
Locate, and then right-click the following registry subkey: KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Point to New, and then click DWORD Value. In the right pane of Registry Editor, notice that New Value #1 (the name of a new registry entry) is selected for editing.
Type ServicesPipeTimeout to replace New Value #1, and then press ENTER.
Right-click the ServicesPipeTimeout registry entry that you created in step 3, and then click Modify. The Edit DWORD Value dialog box appears.
In the Value data text box, type 86400000, and then click OK ( It is the timeout period (in milliseconds) that you want to set for the service. Setting time-out period to 86400000 will set it to 24 hours (86400000 milliseconds)
Restart the computer.
I have tried the other suggestion with ServicePipTimeout. No difference.