как конвертировать мою программу Win # Cform в сервисную программу? - PullRequest
0 голосов
/ 24 августа 2011

как преобразовать мою программу winform на C # в служебную программу?

мне нужно, чтобы моя программа работала как служба (например, слушатель)

Ответы [ 2 ]

5 голосов
/ 24 августа 2011

Как уже отмечал Дарин, преобразование приложения пользовательского интерфейса в службу Windows является в большинстве случаев не очень хорошей идеей.

При этом, может быть (или есть) крайние случаи, когдаэто может быть полезно.
До сих пор я не пытался сделать это с приложением WinForms, но я предполагаю, что шаги почти идентичны тем, что я когда-то делал.
Я написал бэкэнд-приложение, которое запускается какслужба Windows 99,99% времени, но ее также можно запустить как консольное приложение для более простой и быстрой отладки.

Что нужно сделать:

  • запретить запуск приложения несколькими экземплярами (необязательно; см. Эту статью о том, как
  • убедитесь, что ваше приложение не полагается на взаимодействие с пользователем
  • при запуске приложения, проверьте, работает ли оно как служба Windows или в пользовательском режиме

Вы можете определить, запустил ли пользователь приложение, выполнив запрос Environment.UserInteractive - который возвращает false, если он запущен как служба Windows, и true, когда он запущен в пользовательском режиме.

Ваш основной метод должен выглядеть примерно так:

    static void Main()
    {
        // do common initialization, logging framework + the likes

        if (Environment.UserInteractive)
        {
            // start up in user mode
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new myForm());
        }
        else
        {
            // start up as Windows service
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new myService() 
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
5 голосов
/ 24 августа 2011

Служба Windows не имеет графического интерфейса, поэтому единственное представление о преобразовании приложения WinForms с графическим интерфейсом в службу Windows вряд ли имеет смысл. Вы можете взглянуть на следующую статью о написании служб Windows с использованием .NET. Если вам нужно разместить несколько прослушиваний sevrice на данном порту, вы можете взглянуть на размещение службы WCF в управляемой службе Windows .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...