Добрый день! Я написал два C# проекта: службу и консольное приложение. Смысл службы заключается в том, чтобы постоянно следить за приложением и в случае его выключения снова запускать (разрабатываю не вирус!). Исходный код запуска таков:
private static void launch()
{
var p = new Process
{
EnableRaisingEvents = true,
StartInfo = new ProcessStartInfo
{
FileName = appPath
}
};
p.Exited += launchAgain;
p.Start();
}
private static void launchAgain(object sender, EventArgs e)
{
launch();
}
где appPath - путь консольного приложения
Проблема в том, что если написать это в консольном приложении, а не службе, то все работает. Через службу, в принципе, тоже все работает. Но проблема заключается в том, что процесс консольного приложение отображается в диспетчере задач, но не отображается сама консоль.
Пробовал баловаться с параметрами CreateNoWindow и UseShellExecute у StartInfo - безрезультатно.
Служба и UI - вещи несовместимые. Конечно, в системе есть костыли способы которые позволяют делать службы со своим UI, но это концептуально неправильно. Выбрав вариант "служба с UI", вам придется решать проблемы "а что если пользователь вышел из системы", "а что если в системе два сеанса активно", "а что если у текущего пользователя нет прав" и т.п.
Если вам нужно взаимодействие с пользователем - значит, вашим выбором должна стать обычная программа, которую вы будете запускать одним из трех способов:
Чтобы сделать программу у которой не будет своего интерфейса, можно проступить так:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Прошу помощи с библиотекой Clang, а точнее с её вариантами на C#Пробовал CppSharp и ClangSharp
Как-то спрашивал такой вопрос: убрать повторы строк из txt