Ich bin Phantomjs.exe
im Hintergrund ausgeführt. Ich möchte diesen Prozess die ganze Zeit laufen lassen. Wenn es Zeit ist, diesen Prozess zu verwenden (per Knopfdruck), würde ich gerne prüfen, ob der Prozess läuft. Wenn es läuft, möchte ich diesen Prozess verwenden. Wenn es nicht läuft, werde ich einen neuen Prozess starten..NET Variable auf laufenden Prozess setzen (wenn Prozess läuft)
Ich habe herausgefunden, wie man in diesem Fall prüft, ob der Prozess läuft und wie man einen neuen Prozess startet. Aber ich weiß nicht, wie C# Variable mit bereits laufenden Prozess verbinden? (So gibt es keine Notwendigkeit zu starten - Stoppvorgang jedes Mal, was viel Zeit in Anspruch nimmt)
Mein Code:
public bool IsProcessOpen(string name)
{
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains(name))
{
return true;
}
}
return false;
}
private void button1_Click(object sender, EventArgs e)
{
PhantomJSOptions options = new PhantomJSOptions();
PhantomJSDriver driver = null;
bool phantomOpened = IsProcessOpen("Phantomjs");
if(!phantomOpened)
{
PhantomJSDriver driver = new PhantomJSDriver(options);
}
else //set PhantomJSDriver to running exe
{
}
}
Gibt es wirklich keinen anderen (leichteren) Weg? Nehmen wir an, ich erstelle eine einfache EXE mit nur einer Methode und führe sie dann aus. Das einzige, was ich will, ist, diese einfache Methode von einer anderen Anwendung aus aufzurufen. Muss ich dafür wirklich IPC/Named Pipes verwenden? – FrenkyB
@FrenkyB: Wenn es so einfach ist, warum implementieren Sie die Methode nicht direkt in Ihrem Code? Oder laden Sie die EXE als Assembly in Ihre Anwendung und rufen Sie die Methode dort auf ... –