Как выйти из моно-сервиса? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь выйти из своего моно-сервиса чисто.

Я строю моно-сервис, и чтобы упростить отладку, я запускаю его как:

mono-service --debug /etc/App.exe

Это здорово, конечно, потому что Console.WriteLine("..."), который у меня есть в моем коде, выводит на экран.

Следующее, что я делаю, это добавляю новый поток в OnStart, потому что, конечно, затем код(служба) никогда не будет считаться запущенной.

protected override void OnStart(string[] args)
{
    Thread serviceThread = new Thread(new ThreadStart(StartMyApplicationAsync));
    serviceThread.Start();
}

Хотя с флагом --debug консоль записывает работу, но она никогда не завершается.Я могу только выдать kill -9 для завершения приложения.Служба даже не может быть перезапущена.

Как мне аккуратно выйти из моно-службы после запуска потока?

1 Ответ

0 голосов
/ 22 мая 2019

Прошло некоторое время, но я наконец нашел: Console.IsOutputRedirected. (Часть .Net 4.5)

Если кто-нибудь еще найдет этот пост, ответ будет:

protected override void OnStart(string[] args)
{
    if(Console.IsOutputRedirected)
    {
        Thread serviceThread = new Thread(new ThreadStart(StartMyApplicationAsync));
        serviceThread.Start();
    } else {
        StartMyApplicationAsync();
    }
}

Таким образом, при тестировании приложений с помощью переключателя --debug, он будет отвечать / заканчивать Ctrl + c

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