首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让程序确保它有3个自己的实例一直在运行?

让程序确保它有3个自己的实例一直在运行?
EN

Stack Overflow用户
提问于 2010-03-27 07:03:19
回答 2查看 135关注 0票数 1

有一个.NET程序集,它需要同时运行3个实例,我该如何监控它。

我相当肯定这可以通过监控系统进程来完成?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-27 07:08:32

类似这样的

代码语言:javascript
复制
        using System.Diagnostics;

        // ...

        string proc = Process.GetCurrentProcess().ProcessName;
        Process[] processes = Process.GetProcessesByName(proc);

        if (processes.Length != 3)
        {
            // ...
        }
票数 3
EN

Stack Overflow用户

发布于 2010-03-27 07:15:24

步骤1:启动初始进程,并让它知道它是主"ID1"

要启动初始进程,请使用命令行参数。MyProcess.exe -ID1流程的这个实例知道它是“主”或ID1 vs. ID2,ID3

步骤2:当应用程序的ProcessID为#1时,定期运行此代码

注意:您可以使用计时器并激发事件,并使用以下代码处理它:

代码语言:javascript
复制
Imports System.Diagnostics

'Check to see if we need to spawn one or more processes
Dim ProcessCounter as integer = 0

For Each p as Process In Process.GetProcesses
    if p.NameProperty??.ToString() = "MyProcessName" then ProcessCounter += 1
Next

'Use this code to spawn new instances of the process, and assign process ID's accordingly
while processcounter < 3
   Use Process.Start() and run a new instance of your process, but pass it a command line argument -ID# where # is the # of that process (also = to ProcessCounter)
   ProcessCounter += 1
end while

备注:

  • 你可能想要运行一个“监视器”进程,定期运行上面的代码...您可以让一个windows任务每分钟左右运行一个简单的exe,它只包含上面的代码。如果主进程(或上面ID =1的进程)可能终止
  • 如果进程的内部ID变量不是1(表明是主进程负责监控现有的3个实例),则不会运行上述代码。只有一个进程需要执行此操作来监视
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2527338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档