s yu Ответов: 2

Оконная служба onstart событие не запущено


В моем сервисном проекте Windows проект выглядит запущенным, но на самом деле это не так. Ниже приведен фрагмент соответствующего кода:
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] {  new Service1() };
g.Write2Log(g.logFolder, " WinService - PhotoFile: ServicesToRun before start  " + DateTime.Now);
try {
    ServiceBase.Run(ServicesToRun);
    g.Write2Log(g.logFolder, " WinService - PhotoFile: ServicesToRun after start  " + DateTime.Now);
} catch (Exception ex) {
    g.Write2Log(g.logFolder, "ServicesToRun can't be launched - Exception: " + ex.Message + "  " + DateTime.Now);
}

В моем файле журнала отображается сообщение "ServicesToRun before start", но
"ServicesToRun after start" никогда не отображается. Это означает, что
ServicesToRun = new ServiceBase[] { новая Сервиса1() }
на самом деле не вызывается, на OnStart() событие не срабатывает.
Ссылаясь на c# - разрешить службе взаимодействовать с рабочим столом в Windows - переполнение стека[^]
Я проверил "разрешить службе взаимодействовать с рабочим столом", но проблема все еще существует. Что еще нужно сделать для этого жука? Спасибо.

Что я уже пробовал:

Служба окон на самом деле не запустилась должным образом

ZurdoDev

Проверьте Просмотр событий.

s yu

Сообщение в представлении событий выглядит следующим образом: "Служба успешно запущена." Ничего больше.

2 Ответов

Рейтинг:
2

RickZeeland

Статья, на которую вы ссылаетесь, тоже слишком старая, с 9-летней давности. В Windows XP это будет работать, но более новые версии Windows просто больше не позволяют взаимодействовать с рабочим столом.


Рейтинг:
2

Richard Deeming

Ваша услуга имеет запустился нормально, и бага нет.

То ServiceBase.Run метод не возвращается до окончания службы останавливает Ваше сообщение "после запуска" не будет регистрироваться до тех пор, пока служба не остановится .

Если вы хотите войти в систему после запуска службы, добавьте этот код в свою службу. OnStart метод.