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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

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

by Anonymous » 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.

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?

Top