using System;
using System.IO;
using System.Linq;
using System.Threading;
namespace 检查应用
{
internal class Program
{
/// <summary>
/// 判断是否有当前进程,有 什么都不做,没有 启动该进程
/// </summary>
/// <param name="name">进程名</param>
/// <param name="path">进程启动路径</param>
public void JudgmentRun(string name,string path)
{
if (System.Diagnostics.Process.GetProcessesByName(name).ToList().Count > 0)
{
Console.WriteLine(name + "正在运行");
}
else
{
Console.WriteLine(name + "没在运行,正在重新启动");
System.Diagnostics.Process.Start(path);
}
}
static void Main(string[] args)
{
string[] names = new string[10]; //软件名称列表
int b = 0;//用于遍历列表
//读取txt文件内容
StreamReader program = new StreamReader("program.txt");
Program n = new Program();//调用program类中的方法
//将txt文件内容写入列表
while (true)
{
string str1 = program.ReadLine();//名字
if (String.IsNullOrEmpty(str1))//逐行判断是否为空
{
break;
}
names[b] = str1;
b++;
}
while (true)
{
Console.WriteLine("-------------------------------------------");
Console.WriteLine(DateTime.Now.ToString());//显示当前时间
for (int i = 0; i < 9; i+=2)
{
if (names[i] == null)
{
break;
}
//调用JudgmentRun方法
n.JudgmentRun(names[i],names[i+1]);
}
Thread.Sleep(5000);//更新速率为5秒
}
}
//判断当前程序未响应后运行下面代码,关闭当前程序
//System.Diagnostics.Process[] app = System.Diagnostics.Process.GetProcessesByName(t);
//if (app.Length > 0) app[0].Kill();
}
}
这代码运行前需要在"\bin\Debug"这个路径下新建一个.txt文件,用来存储需要检查的程序名和路径。技术有限,目前还无法判断该正在运行的程序是否是未响应的状态,在这里求一个判断的方法,感谢!!
写的有点糙,欢迎各位提出改进意见。