【发布时间】:2016-09-06 14:06:13
【问题描述】:
我必须启动应用程序的多个实例,并且以后必须以某种方式识别它。
是否可以使用一些自定义 TAG 来启动实例,以便稍后我可以找到我需要的实例?
Process p = new Process();
// p.TAG = "Guid"; ??????
p.StartInfo.FileName = "path";
p.Start();
更新 1
我在 WPF 应用程序的 LOAD 事件中启动了几个进程。有时无法获取当前应用的进程 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????");
http://blog.gapotchenko.com/eazfuscator.net/reading-environment-variables
【问题讨论】:
-
看这个:stackoverflow.com/questions/611094/… 启动进程后返回的变量,你可以将它存储在一个列表中,然后使用它来确定该进程是否仍在运行。
-
@Versatile 这与问题有什么关系?
-
@Dimi 为什么除了
Process对象本身之外还需要其他标识符?除非您重用同一个对象来启动多个进程,否则每个Process对象都对应于它启动的进程。你可以得到进程的PID是由Id属性返回的 -
@Dimi 你想做什么?为什么要在进程中附加一些标签?它的唯一 ID 还不够吗?
-
伙计们,你们完全错过了这个问题的重点,关于“为什么”他需要标记进程的争论没有帮助。我运行一个管理器,我希望能够在其中查询进程,即使在我的服务重新启动后也是如此。我并不总是有 id,我希望我的服务经理是无状态的。存储进程 ID 不是一种选择。在那里,这是我的问题,所以不要再说使用你已经被告知的进程 ID 不是一个选项。