一个需要长期运行的程序老是自己挂掉,为了让它挂掉后重启,一个简单的方法是写个服务检测它的存在,发现该进程挂掉,则重启该进程。
首先新建一个Windows 服务,具体可以参考http://www.cnblogs.com/caca/archive/2005/02/25/109028.html
按上面网站的方法,安装服务。之后,你会发现该进程是启动了,但是界面不显示。这是因为服务是以非当前桌面的会话运行的,它运行的程序,当前桌面的人也是看不到的。
首先新建一个Windows 服务,具体可以参考http://www.cnblogs.com/caca/archive/2005/02/25/109028.html
然后,overriding onstart() 方法,设置一个timer,用来检测程序进程
- protected override void OnStart(string[] args)
- {
- System.Timers.Timer t = new System.Timers.Timer();//实例化Timer类
- //int intTime = Convert.ToInt32(cmbTimer.Text.ToString()) * 60 * 60 * 1000;
- int intTime = 1000 * 10;
- t.Interval = intTime;//设置间隔时间,为毫秒;
- t.Elapsed += new System.Timers.ElapsedEventHandler(ThreadMethod);//到达时间的时候执行事件
- t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
- t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
- }
- public static void ThreadMethod(object source, System.Timers.ElapsedEventArgs e)
- {
- startFlowStatics();
- }
- public static void startFlowStatics()
- {
- string name = "FlowStatics";
- int processCount = 1234560;
- Process[] prc = Process.GetProcesses();
- foreach (Process pr in prc)
- {
- if (name == pr.ProcessName)
- {
- processCount = 0;
- return;
- }
- }
- if (processCount != 0)
- {
- try
- {
- Process myProcess = new Process();
- myProcess.StartInfo.FileName = "D:\\FlowStatics.exe";//要启动的程序位置
- myProcess.StartInfo.Verb = "Open";
- myProcess.StartInfo.CreateNoWindow = true;
- myProcess.Start();
- }
- catch (System.Exception ex)
- {
- //MessageBox.Show(ex.Message + "!!!");
- }
- }
- else
- {
- //MessageBox.Show("已有该程序运行");
- }
- }
查看服务,找到你的服务,属性-->登陆,其中"允许服务与桌面交互"打钩...另外可参考http://www.pin5i.com/showtopic-24076.html