WinSvc и его консольная версия для тестирования - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть ConsoleApp, но я думаю перенести его в базу приложений WinSvc.И я считаю, что нужно переместить код soruce как проект библиотеки и использовать его как в старой Консоли для ТЕСТА для других возможных разработок , так и в WinSvc для реальной РАБОТЫрайон .Таким образом, когда я добавляю что-то новое в базовую библиотеку , оно будет появляться в обоих приложениях.И он сможет выполнять мои тесты в среде ConsoleApp, и для реальной части среды потребуется только перестроить часть WinSvc (чтобы избежать использования подключенного режима отладки).

Итак, что вы можете сделатьсказать об этой модели?Или это хороший подход?Или у вас есть другие предложения?

1 Ответ

0 голосов
/ 26 апреля 2019

Это может быть решением:

public static void Main(string[] args)
{
    MyWinSvcClass mySvc = new MyWinSvcClass();

    if (Environment.UserInteractive) 
    {
            // If the executable is started on console
            mySvc.RunAsConsole(args);
    }
    else
    {
            // If the executable is started as a service
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] { mySvc };
            ServiceBase.Run(ServicesToRun);
    }
}

Определить RunAsConsole () В вашем классе обслуживания:

public void RunAsConsole(string[] args)
{
    Log("Service is started on console:");

    OnStart(args);

    Log("Service session is ended.");

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