C# запустить приложение из Windows Service, только если оно еще не работаетC#

Место общения программистов C#
Anonymous
C# запустить приложение из Windows Service, только если оно еще не работает

Сообщение Anonymous »

Основное имя приложения - SysdemConnect. Это приложение запускается с ярлыка настольного стола. Когда приложение запускается, пользователь может нажать кнопку «Установить службу Windows». Это работает, как и ожидалось.
Сервис установлен для автоматического запуска после установки, и это ожидается/требуется. Открыто и нажавшая службу установки. Услуга установлен, но поскольку уже существует экземпляр работы SysDemConnect, служба не должна запускать новый экземпляр SysDem Connect.

Код: Выделить всё

        protected override void OnStart(string[] args)
{
try
{
Process cmd = new Process();
string filename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SysDem.Connect.exe");
cmd.StartInfo.FileName = filename;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
cmd.StartInfo.Arguments = null;
cmd.Start();
processId = cmd.Id;
sessionID = cmd.SessionId;
}
catch (Exception ex)
{
ConnectServiceLogger.WriteToConnectServiceLog(ex.Message);
}
}
< /code>
Я уже пробовал ниже, но похоже, что метод OnStart () не выполняется при перезапуске Windows, все же я вижу, как работает обслуживание. < /p>
        protected override void OnStart(string[] args)
{
try
{
Process[] sysdemConnectProcess = Process.GetProcessesByName("SysDem.Connect");
bool isRunning = sysdemConnectProcess.Length > 0;

if (!isRunning)
{
Process cmd = new Process();
string filename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SysDem.Connect.exe");
cmd.StartInfo.FileName = filename;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
cmd.StartInfo.Arguments = null;
cmd.Start();
processId = cmd.Id;
sessionID = cmd.SessionId;
}
}
catch (Exception ex)
{
ConnectServiceLogger.WriteToConnectServiceLog(ex.Message);
}
}
Любые идеи, как я могу подойти к этой проблеме?

Подробнее здесь: https://stackoverflow.com/questions/795 ... dy-running

Вернуться в «C#»