Page 1 of 1

C# starten Sie die App vom Windows -Dienst, nur wenn sie noch nicht ausgeführt wird

Posted: 12 Mar 2025, 13:20
by Anonymous
Hauptanwendungsname ist SysdemConnect. Diese Anwendung wird von der Desktop -Verknüpfung gestartet. Wenn die Anwendung ausgeführt wird, kann der Benutzer den Windows -Service "Taste installieren" drücken. Dies funktioniert wie erwartet. SysdemConnect öffnete und drückte den Installationsdienst. Der Service ist installiert. Da jedoch bereits eine Instanz von SysdemConnect ausgeführt wird, sollte der Service keine neue Instanz von Sysdem Connect starten.

Code: Select all

        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>
Ich habe es unten bereits ausprobiert, aber es sieht so aus, als würde die OnStart () -Methode beim Neustart von Windows nicht ausgeführt. Ich kann dennoch den Dienst ausgeführt haben. < /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);
}
}
Irgendwelche Ideen Wie kann ich dieses Problem angehen?