C# 如何使用自定义标识符启动流程/实例

C# 如何使用自定义标识符启动流程/实例,c#,.net,process,instance,C#,.net,Process,Instance,我必须启动应用程序的几个实例,然后我必须以某种方式识别它 是否可以使用一些自定义的标记启动实例,以便稍后我可以找到所需的实例 Process p = new Process(); // p.TAG = "Guid"; ?????? p.StartInfo.FileName = "path"; p.Start(); 更新1 我在WPF应用程序的加载事件中启动了几个进程。有时无法获取当前应用程序的进程Id。所以,如果可能的话,我正在寻找以某种自定义方式区分实例的方法 所以模型看起来像 Paren

我必须启动应用程序的几个实例,然后我必须以某种方式识别它

是否可以使用一些自定义的标记启动实例,以便稍后我可以找到所需的实例

Process p = new Process();
// p.TAG = "Guid"; ??????
p.StartInfo.FileName =  "path";
p.Start();
更新1

我在WPF应用程序的加载事件中启动了几个进程。有时无法获取当前应用程序的进程Id。所以,如果可能的话,我正在寻找以某种自定义方式区分实例的方法

所以模型看起来像

ParentApp.exe
    ---->  Sun.exe
    ---->  Moon.exe


ParentApp.exe
    ---->  Sun.exe
    ---->  Moon.exe
我使用ParentApp.exe的
LOAD
事件将正确的进程ID传递给Sun.exe和Moon.exe,以便以后它们可以创建正确的MSMQ并与ParentApp.exe交换数据,ParentApp.exe也可以关闭这些应用

更新2

在这里执行应用程序期间,我们可以保留一些自定义数据吗

p.Domain = "mydomain?????";
p.EnvironmentVariables.Add("MY_NEW_VARIABLE", "SOME_TEXT????");

您可以存储
进程Id

Process p = Process.Start("notepad.exe");
MessageBox.Show(p.Id.ToString());

看看这个:启动流程后返回的变量,您可以将其存储在列表中,然后使用它确定该流程是否仍在运行。@这与问题有什么关系?@Dimi除了
流程
对象本身之外,为什么还需要其他标识符?除非重复使用同一对象来启动多个进程,否则每个
进程
对象都对应于它启动的进程。您可以通过Id返回进程的PIDproperty@Dimi你想干什么?为什么要将某些标记附加到进程?它的唯一ID还不够吗?伙计,你们完全没有抓住这个问题的重点,争论他需要标记进程的“为什么”是没有帮助的。我运行一个管理器,在那里我希望能够查询进程,即使在我的服务重新启动之后。我并不总是有id,我希望我的服务管理器是无状态的。存储进程ID不是一个选项。这就是我的问题,所以别再说使用已经告诉过你的流程Id了。当你拥有流程对象本身时,你不需要存储Id。这种方法的主要问题是有时它不会返回Id,所以我正在寻找另一种方法。如果可能的话当然…@Dimi“有时”是什么意思?如果您的进程终止,或者它生成另一个进程,然后终止,则该ID无论如何都将无效。除了过程本身,没有其他方法可以识别过程ID@PanagiotisKanavos我在wpf应用程序的加载事件中启动了几个进程。有时无法获取当前应用程序的进程Id。@首先,为什么要启动多个进程?如果需要并行处理,请使用PLINQ或数据流。第二,你确定这些过程已经开始了吗?在检查ID之前,您必须等待它们实际启动。在任何情况下,如果您有对象,您甚至不需要ID。最后,您可以检索所有正在运行的实例,例如使用
Process.getProcessByName(“somename”)