C# 保护自动挂掉进程的进程重启

来源:互联网 发布:php调用lua脚本 编辑:程序博客网 时间:2024/04/28 08:51
一个需要长期运行的程序老是自己挂掉,为了让它挂掉后重启,一个简单的方法是写个服务检测它的存在,发现该进程挂掉,则重启该进程。       
 首先新建一个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


原创粉丝点击