C#/.NET: Обнаружьте, запускается ли программа как услуга или консольное приложение [дубликат]

С помощью

TestArea("name_of_test");

вы создаете временный объект, и этот временный объект будет уничтожен немедленно .

Итак, когда выражение, в котором оно использовалось, закончилось, объект больше не существует.

20
задан Rasmus Faber 16 October 2008 в 09:16
поделиться

4 ответа

Rasmus, это - более ранний вопрос .

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

Или если Вы испытываете затруднения при тестировании/отладке сервиса, переместите код в отдельный dll блок и создайте seprate тестовую обвязку (winforms/console и т.д.).

(Просто заметил, что Jonathan добавил свое решение в конец вопроса.)

6
ответ дан 29 November 2019 в 23:20
поделиться

Я не попробовал его, но это возможно тот Процесс. GetCurrentProcess поможет - под консольным режимом, имя процесса совпало бы с исполняемым файлом, тогда как я буду ожидать (и снова, проверьте!), что при выполнении как услуга его отличалось бы.

2
ответ дан 29 November 2019 в 23:20
поделиться

Не знаю, сработает ли это, но вы можете попробовать использовать PInvoke с этим кодом и проверить, является ли родительский файл «services.exe».

1
ответ дан 29 November 2019 в 23:20
поделиться

Environment.UserInteractive сделает волшебство.

30
ответ дан 29 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: