Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 确保程序始终运行3个自身实例?_C#_.net_Visual Studio - Fatal编程技术网

C# 确保程序始终运行3个自身实例?

C# 确保程序始终运行3个自身实例?,c#,.net,visual-studio,C#,.net,Visual Studio,有一个.NET程序集,它需要有3个实例始终同时运行。我如何监视它 我非常肯定,可以通过监控系统进程来实现这一点。类似这样的内容: 大概是这样的: 步骤1:启动初始流程,让它知道它是主ID1 要启动初始进程,请使用命令行参数。MyProcess.exe-ID1 您的流程的这个实例知道它是主流程或ID1与ID2、ID3 步骤2:当应用程序的ProcessID为1时,定期运行此代码 注意:您可以使用计时器触发事件,并使用以下代码进行处理: Imports System.Diagnostics 'Ch

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

我非常肯定,可以通过监控系统进程来实现这一点。

类似这样的内容:

大概是这样的:

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

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

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

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

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
注:

您可能希望运行一个定期运行上述代码的监视程序进程。。。您可以有一个每分钟左右运行一次简单exe的windows任务,该任务只包含上述代码。如果主进程或上面ID=1的进程可能终止,则必须使用观察进程 如果一个进程的内部ID变量不是1,表示它是负责监视现有3个实例的主进程,那么上述代码将不会运行。只有一个流程需要执行此监视 步骤1:启动初始流程,让它知道它是主ID1

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

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

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

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
注:

您可能希望运行一个定期运行上述代码的监视程序进程。。。您可以有一个每分钟左右运行一次简单exe的windows任务,该任务只包含上述代码。如果主进程或上面ID=1的进程可能终止,则必须使用观察进程 如果一个进程的内部ID变量不是1,表示它是负责监视现有3个实例的主进程,那么上述代码将不会运行。只有一个流程需要执行此监视
您可以按名称搜索进程,但请记住,进程的名称并不难伪造。在您的情况下,这可能不是一个问题。但这是需要注意的。您可以按名称搜索进程,但请记住,进程的名称并不难伪造。在您的情况下,这可能不是一个问题。但这是需要注意的。