Открытие окна / диалога из службы .Net

#c# #.net #windows-services

#c# #.net #windows-службы

Вопрос:

Я создал C # .Чистая служба Windows. Есть несколько файлов конфигурации, которые используются этой службой. Прямо сейчас у нас есть другой компонент dll, который загружается приложением, и оттуда мы создаем файлы конфигурации. Я хочу открыть этот DLL-компонент непосредственно из моей службы. Следующий вариант, который я хочу предоставить в final service exe, который будет действовать как сервис, а также конфигуратор.

Допустим, имя exe равно SampleServ.exe тогда параметры должны быть:

  1. Без каких-либо аргументов он должен запускаться как service
  2. С аргументом типа SampleServ.exe -config (он должен запускать конфигуратор вместо службы)

Я пытаюсь вот так

 public static void Main(string[] args)
{
    if (args.Length == 0)
    {
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] 
        { 
           new Service1() 
        };
        ServiceBase.Run(ServicesToRun);

    }
    else
    {
        MainPage wnd = new MainPage();
        wnd.ShowDialog();
    }
}
  

Здесь главная страница является производным окном, и я не могу добавить пространство имен system.window из-за ограничения сервиса.

Пожалуйста, дайте мне знать, возможен ли другой способ.


После добавления еще какого-либо компонента в project reference я могу это сделать. Я добавил ссылки типа «PresentationCore», «PresentatinoFramework», «System.Xaml». Я просто хотел узнать, есть ли какие-либо последствия добавления такого компонента.? Есть идея?

В остальном теперь мой код работает…

Ответ №1:

Привет, вот полный пример того, что вам нужно, он также включает функцию установки / удаления

http://blogs.microsoft.co.il/blogs/kim/archive/2009/01/04/self-installing-windows-service.aspx

Ответ №2:

Используйте Environment.GetCommandLineArgs для получения аргументов (индекс 0 — это имя программы, однако будьте осторожны). Если аргумент 1 не «-config», запустите как службу, в противном случае покажите свою форму конфигурации.

Комментарии:

1. Я могу получить аргумент. Это не моя проблема. Когда я создаю объект компонента (который является wondow) и делаю. Покажите Dialog, что сейчас происходит. Это не позволяет мне добавлять пространство имен / зависимости, связанные с формой.