Я создал одно приложение для Windows, которое должно запускаться каждый раз на рабочем столе. Для этого мы помещаем приложение в startup. Но из-за некоторых исключений или закрытия пользователя приложение окна закрывается.Запустить приложение Windows из службы Windows
Чтобы избежать этого, я написал службу Windows, он проверяет каждую минуту, работает ли приложение или нет. Если он закрыт, служба Windows запустит приложение.
Когда я отлаживаю службу Windows, приложение работает нормально. Но когда я сделал настройку службы. Служба работает каждую минуту, но приложение Windows не открывается.
код следующим образом:
void serviceTimer_Elapsed(object sender, EventArgs e)
{
try
{
bool isAppRunning = IsProcessOpen("App");
if (!isAppRunning)
{
Process p = new Process();
if (Environment.Is64BitOperatingSystem)
p.StartInfo.FileName = @"C:\Program Files (x86)\Creative Solutions\App\App.exe";
else
p.StartInfo.FileName = @"C:\Program Files\Creative Solutions\App\App.exe";
p.Start();
}
}
catch (Exception ex)
{
WriteErrorLog("Error in service " + ex.Message);
}
}
метод, чтобы проверить экземпляр работает или нет:
public bool IsProcessOpen(string name)
{
//here we're going to get a list of all running processes on
//the computer
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains(name))
{
//if the process is found to be running then we
//return a true
return true;
}
}
//otherwise we return a false
return false;
}
Пожалуйста, кто может помочь, как решить эту проблему.
Вы решить неправильные проблемы здесь. Если есть код, который всегда должен быть запущен, он должен быть в первую очередь сервисом. Если программа выходит из-за исключений - исправьте ошибки. Ваше текущее «решение» звучит так, как будто это еще хуже. –
Я бы попытался перестроить ваш код, чтобы вы могли поместить код, который должен работать все время в службе. Если вашему коду нужен пользовательский интерфейс, вы все равно можете использовать его в качестве приложения, которое может быть открыто и закрыто по мере необходимости. Вы можете связаться с сервисом, используя что-то WCF. – AndrewJE