我在后台运行Phantomjs.exe
。
我想让这个过程一直在运行。什么时候使用这个过程(点击按钮)我想检查过程是否正在运行。如果它正在运行,我想使用该过程。如果它没有运行,我将开始一个新的过程。
我已经找到了如何检查进程是否正在运行以及如何在这种情况下启动新进程。但我不知道如何将C#变量与已经运行的进程连接起来? (因此无需启动 - 每次停止过程,这需要花费大量时间)
我的代码:
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
{
}
}
答案 0 :(得分:0)
我认为这里存在一些误解:
检查具有给定名称的流程无法确保您检测到正确的流程。我可以将记事本重命名为PhantomJS,你会发现错误的记录。
您无法简单地访问其他进程的内存。每个进程都有自己的虚拟内存,可以防止其他进程。
解决方案是:
让自己与这些概念失败,你可能会在SO上找到代码示例。
我不建议使用替代解决方案: