C# starten Sie die App vom Windows -Dienst, nur wenn sie noch nicht ausgeführt wird
Posted: 12 Mar 2025, 13:20
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.
Irgendwelche Ideen Wie kann ich dieses Problem angehen?
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);
}
}