[英]Monitoring process to be always running
誰知道我該如何使用C#編寫Monitor程序來控制應用程序始終運行? 我需要它是一個雙監視器應用程序,我將解釋:我有一個應用程序Ap1,它必須控制始終啟動的Ap2進程,而Ap2必須控制它始終啟動的Ap1進程。 作為恢復,如果我終止了Ap1進程,則Ap2應用程序應立即啟動Ap1(如果Ap2死了,反之亦然)。
這是我正在開發但無法正常工作的代碼,我不知道,但是當我終止對程序的監視時,就再也沒有啟動。
public void Monitor()
{
Console.WriteLine("Monitoring {0} process...", processname);
while (IsProcessRunning() == true)
{
Process[] runningNow = Process.GetProcesses();
foreach (Process process in runningNow)
{
if (process.ProcessName == processname)
{
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Process:{0} is running actually", process.ProcessName);
}
else { /* Provide a messagebox. */ }
}
// Sleep till the next loop
Thread.Sleep(intInterval);
}
while (IsProcessRunning() != true)
{
ProcessMonitor proc = new ProcessMonitor("ConsoleApplication1", 1000);//Check if is running each 1 second
Console.WriteLine("Process:{0} is NOT running actually", processname);
//Application folder of exe
String applicationFolder = "C:\\App";
//Get the executable file
String procPath = applicationFolder + @"\Ap1.exe";
Console.WriteLine("Running {0} process...", proc.Name);
//Lauch process
Process p = Process.Start(procPath);
Console.WriteLine("Process running {0} OK", proc.Name);
//p.WaitForExit(10000);
}
}
和主程序:
static void Main(string[] args)
{
ProcessMonitor proc = new ProcessMonitor("ConsoleApplication1", 1000);//Check if is running each 1 second
if (proc.IsProcessRunning() != true)
{
Console.WriteLine("{0} is not running.", proc.Name);
//Application folder of exe
String applicationFolder = "C:\\App";
//Get the executable file
String procPath = applicationFolder + @"\Ap1.exe";
Console.WriteLine("Running {0} process...", proc.Name);
//Lauch process
Process p = Process.Start(procPath);
Console.WriteLine("Process running {0} OK", proc.Name);
//p.WaitForExit(10000);
}
else
{
proc.Monitor();
}
proc.FreezeOnScreen();
}
您可以在任務計划程序中設置一個任務,以預定的時間間隔(例如每半小時)啟動程序。 我相信您可以將其設置為如果已有實例在運行,則不啟動任務。 (如果我做錯了,請糾正我)
我們只需要一次,就可以定期監視流程列表,檢查流程的名稱。 如果該進程在給定時間內沒有出現,我們將重新啟動它。 您可以使用Process.GetProcessesByName
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.