【问题标题】:Is there any way to 'GetCommandLineArgs' from another process?有没有办法从另一个进程“GetCommandLineArgs”?
【发布时间】:2019-06-29 20:37:22
【问题描述】:

我只是想用不同的参数启动和终止同一个程序的多个实例。启动不是问题,但我怎样才能终止具有特定参数的进程?

static void Start(string args)
{
    var process = new Process
    {
        StartInfo = { FileName = "FileName", Arguments = args }
    };
    process.Start();
}

这是我用 args 启动 procs 的方法。

我试图以某种方式保留它,但我没有成功。我已经在 Google 上搜索了过去一小时,但没有得到任何有用的结果。

【问题讨论】:

  • 使用字典 来存储进程。
  • 一个字典可以工作,但如果这个字典存在/存在的时间更长,如果它们不再有用,不要忘记从字典中释放 Process 对象。否则,您的程序可能会通过持有 Process 对象的字典来持有/泄漏进程句柄。 (另见此处:stackoverflow.com/questions/16957320/…

标签: c# process arguments kill


【解决方案1】:

使用Dictionary<string, Process> 来存储进程和参数:

static Dictionary<string, Process> processes = new Dictionary<string, Process>();

static void StartProcess(string args)
{
    var process = new Process
    {
        StartInfo = { FileName = "FileName", Arguments = args }
    };
    process.Start();
    processes.Add(args, process);
}

static void StopProcess(string args)
{
    var process = processes[args];
    process.Kill();
    process.Dispose();
    processes.Remove(args);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多