2016-08-17 3 views
2

У меня есть следующая проблема.Запуск двух служб Windows в одном приложении

У меня есть приложение для работы с двумя окнами для запуска в одном приложении (WPF), оба из них уже установлены. но когда я должен «Старт» им (ServiceController.Start()), только услуга, которая начинается первый держит включен, остальные возвращает сообщение:

Ошибка 1053: Служба не ответила на старт или контролировать запрос в своевременно

Это мой код, чтобы начать их:

//*TS_TimeOut timespan has 1 hour 
    private void InitServiceOne() 
    { 
     ServiceController SControllerServiceOne = new ServiceController("ServiceOne", Environment.MachineName); 

     SControllerServiceOne.Start(); 
     SControllerServiceOne.WaitForStatus(ServiceControllerStatus.Running, TS_TimeOut); 
    } 

    private void InitServiceTwo() 
    { 

     ServiceController SControllerServiceTwo = new ServiceController("ServiceTwo", Environment.MachineName); 

     SControllerServiceTwo.Start(); 
     SControllerServiceTwo.WaitForStatus(ServiceControllerStatus.Running, TS_TimeOut); 
    } 

Это код, который я использовал для их установки:

private void InstallServiceOne(string strServiceOnePath) 
    { 
     ServiceProcessInstaller ProcessServiceServiceOne = new ServiceProcessInstaller(); 

     ServiceInstaller ServiceInstallerOne = new ServiceInstaller(); 
     InstallContext Context = new System.Configuration.Install.InstallContext(); 
     String path = String.Format("/assemblypath={0}", strServiceOnePath)); 
     String[] cmdline = { path }; 

     Context = new System.Configuration.Install.InstallContext("", cmdline); 
     ServiceInstallerOne.Context = Context; 
     ServiceInstallerOne.DisplayName = "ServiceOne"; 
     ServiceInstallerOne.Description = "ServiceOne"; 
     ServiceInstallerOne.ServiceName = "ServiceOne"; 
     ServiceInstallerOne.StartType = ServiceStartMode.Automatic; 
     ServiceInstallerOne.Parent = ProcessServiceServiceOne; 

     System.Collections.Specialized.ListDictionary stateServiceOne = new System.Collections.Specialized.ListDictionary(); 
     ServiceInstallerObjIntegracao.Install(stateServiceOne); 
    } 

    private void InstallServiceTwo(string strServiceTwoPath) 
    { 

     ServiceProcessInstaller ProcessServiceServiceTwo new ServiceProcessInstaller(); 

     ServiceInstaller ServiceInstallerTwo = new ServiceInstaller(); 
     InstallContext Context = new System.Configuration.Install.InstallContext(); 
     String path = String.Format("/assemblypath={0}", strServiceTwoPath); 
     String[] cmdline = { path }; 

     Context = new System.Configuration.Install.InstallContext("", cmdline); 
     ServiceInstallerTwo.Context = Context; 
     ServiceInstallerTwo.DisplayName = "ServiceTwo"; 
     ServiceInstallerTwo.Description = "ServiceTwo"; 
     ServiceInstallerTwo.ServiceName = "ServiceTwo"; 
     ServiceInstallerTwo.StartType = ServiceStartMode.Automatic; 
     ServiceInstallerTwo.Parent = ProcessServiceServiceTwo; 

     System.Collections.Specialized.ListDictionary stateServiceTwo = new System.Collections.Specialized.ListDictionary(); 
     ServiceInstallerObjBRMonitoring.Install(stateServiceTwo); 

    } 

Это мой первый вопрос в сообществе stackoverflow, а английский - не мой родной язык. Приносим извинения, если я совершил какую-либо ошибку.

+0

Просмотрели ли вы сведения о каких-либо деталях исключения? –

+0

Я хочу подтвердить, если вы запустили 'InitServiceTwo', прежде чем запускать' InitServiceOne', служба «два» работы и услуг «один» отключается? –

+0

Да, если я запустил InitServiceTwo перед InitServiceOne, ServiceTwo отлично работает. –

ответ

1

Проблема решена!

Мне просто нужно было перейти от Debug к выпуску и установке версии .exe, теперь обе службы работают и работают без проблем.

Смежные вопросы