有时候,用户在进行某个操作时,程序运行到某个阶段突然崩溃,我们需要让程序自动重启,重新执行用户之前的操作,当发现主程序还存在,就重启用户执行的附加程序。这时候Process就派上了用场。

控制台测试用例:

public class Program
{
/// <summary>
/// 保护的算法进程名称
/// </summary>
public static string keepProgessName = "iips.sdk.iauapp"; /// <summary>
/// 主算法进程名称
/// </summary>
public static string mainProcessName = "ipvs.sdk.vodapp.ips"; static void Main(string[] args)
{
#region 进程Process

//获取本机的进程
              //var pros = Process.GetProcesses(".");

            //打开txt文件
Process p = Process.Start(@"C:\Users\11456\Desktop/新建文本文档.txt");
//查看iips.sdk.iauapp进程是否存在,存在就为它注册退出时间
Process[] pro = Process.GetProcessesByName(keepProgessName);
if (pro.Count() > )
{
//获取或设置在进程终止时是否应引发 System.Diagnostics.Process.Exited 事件,true:引发
pro[].EnableRaisingEvents = true;
//进程推出后的执行时间
pro[].Exited += Process_Exited;
}
Console.ReadKey();
#endregion } private static void Process_Exited(object sender, EventArgs e)
{
//判断主进程是否存在,存在就再次自动重启程序
Process[] pro = Process.GetProcessesByName(mainProcessName);
if (pro.Count() > )
{
Process.Start(@"C:\源代码\imageEnhance\Dev\Dev3.2\AppProject\iImgEnh\binr\identification\iips.sdk.iauapp.exe");
} }
}

如图:

红色为子进程,蓝色为主进程。

当红框进程崩溃后,程序发现主程序正常运行,就重启服务。

C#中的Process类使用的更多相关文章

  1. C#的Process类调用第三方插件实现PDF文件转SWF文件

    在项目开发过程中,有时会需要用到调用第三方程序实现本系统的某一些功能,例如本文中需要使用到的swftools插件,那么如何在程序中使用这个插件,并且该插件是如何将PDF文件转化为SWF文件的呢?接下来 ...

  2. C#的Process类的一些用法

    c#之process类相关整理 一.根据进程名获取进程的用户名? 需要添加对 System.Management.dll 的引用 using System.Diagnostics; using Sys ...

  3. c#之process类相关整理

    一.根据进程名获取进程的用户名?   需要添加对 System.Management.dll 的引用   using System.Diagnostics; using System.Manageme ...

  4. 转:Process类的使用

    转载自:http://www.oschina.net/code/snippet_119226_6188 一.根据进程名获取进程的用户名? 需要添加对 System.Management.dll 的引用 ...

  5. C#使用Process类杀死进程,执行命令等

    c#之process类相关整理 一.根据进程名获取进程的用户名? 需要添加对 System.Management.dll 的引用 using System.Diagnostics; using Sys ...

  6. C#中Process类的使用

    本文来自: http://www.cnblogs.com/kay/archive/2008/11/25/1340387.html Process 类的作用是对系统进程进行管理,我们使用Process类 ...

  7. [转]Java中使用Runtime和Process类运行外部程序

    帖子1: 使用Runtime.getRuntime().exec()方法可以在java程序里运行外部程序.  1. exec(String command)  2. exec(String comma ...

  8. 利用.Net中Process类调用netstat命令来判断计算端口的使用情况

    利用.Net中Process类调用netstat命令来判断计算端口的使用情况: Process p = new Process();p.StartInfo = new ProcessStartInfo ...

  9. java中Runtime类和Process类的简单介绍

    在java.lang包当中定义了一个Runtime类,在java中对于Runtime类的定义如下: Java code public class Runtime extends Object 每个 J ...

随机推荐

  1. Error:gradle-resources-test:thymeleaf-in-action.main: java.lang.NoClassDefFoundError: org/apache/tools/ant/util/ReaderInputStream

    目录 Error:gradle-resources-test:thymeleaf-in-action.main: java.lang.NoClassDefFoundError: org/apache/ ...

  2. idea 导入 eclipse java ee 项目,并使用 tomcat 7 部署运行

    1.导入java ee项目.直接open 2.导入jar依赖 3.修改编译的目录 4.修改tomcat目录 5.tomcat添加目录 请注意classes单词 D:\project\xxxxxx\We ...

  3. required string parameter 'XXX'is not present 的几种情况

    required string parameter 'XXX'is not present 的几种情况 情况一:原因是由于头文件类型不对,可以在MediaType中选择合适的类型,例如GET和POST ...

  4. VS2013下开发VC++程序,编译时提示错误error MSB8020: The build tools for v140 (Platform Toolset = 'v140') 的解决方案

    1. 问题描述: 提示如下错误:error MSB8020: The builds tools for v140 (Platform Toolset = 'v140') cannot be found ...

  5. NamedPipeStream的使用案例

    NamedPipeStream的使用具体案例如下: using System; using System.Data; using System.Data.SQLite; using System.IO ...

  6. android -------- Base64 加密解密算法

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.可查看RFC2045-RFC2049,上面有MIME的详细规范. Ba ...

  7. RFC2119 规范内容

    RFC2119 https://www.ietf.org/rfc/rfc2119.txt Network Working Group S. Bradner Request for Comments: ...

  8. 简单的Lock死锁例子

    static void Main(string[] args) { lock (_lock1) { var t = new Thread(() => { lock (_lock1) { Cons ...

  9. 学习数据结构Day2

    之前学习过了数组的静态实现方法,同时将数组的所有有可能实现的方法都统一实现了一遍,之后支持了泛型的相关 概念,接下来就是如何对数组进行扩容的操作也就是实现动态数组. private void resi ...

  10. Mysql查看优化后的SQL 语句

    EXPLAIN  EXTENDED 1先执行 EXPLAIN  EXTENDED 2 show warnings: EXPLAIN EXTENDED SELECT * FROM `receivable ...