public int CallPhoneExe(string arg) //arg为进程的命令行参数{             WaitHandle[] waits =new WaitHandle[2]; //定义两个WaitHandle值,用以控制进程的执行过程waits[0] = HSTOP; //AutoResetEvent HSTOP = new AutoResetEvent(false);waits[1] = GlobalStop;//AutoResetEvent GlobalStop = new AutoResetEvent(false);int iReturn=0;
            Process p = new Process();//新建一个进程p.StartInfo.Arguments = arg; //进程的命令行参数p.StartInfo.FileName = filepath;//进程启动路径p.StartInfo.CreateNoWindow = true;//不显示新进程的窗口
            p.StartInfo.RedirectStandardOutput = true;//输出重定向p.StartInfo.RedirectStandardError = true;   //Redirect the error ouput!p.StartInfo.UseShellExecute = false; p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;p.EnableRaisingEvents = true; p.Exited += new EventHandler(p_Exited); //进程自然结束后启动p—Exited事件p.OutputDataReceived += new DataReceivedEventHandler(ChangeOutput);//进程有输出时,启动ChangeOutPut函数       p.Start();//进程启动p.BeginOutputReadLine();int hstop = WaitHandle.WaitAny(waits);//启动线程暂停,知道WaitHandle中传来有效信号switch (hstop)//判断信号是又哪个{case 0: //进程自然结束if (p.WaitForExit(2000))iReturn = p.ExitCode; //获取进程的返回值else{CloseProcess();iReturn = -2;}break;case 1: //进程被迫结束p.Kill();//杀掉进程if (!p.HasExited){                        p.Kill();}                    iReturn = -3;break;}HSTOP.Reset(); //HSTOP复位,这个变量指示进程自然结束,每次结束后都得自然复位           p.Close(); //创建的p关闭return iReturn;          }private void p_Exited(object sender, EventArgs e){HSTOP.Set();}//输出重定向函数private void ChangeOutput(object sendingProcess, DataReceivedEventArgs outLine){if (!String.IsNullOrEmpty(outLine.Data)) //字符串不为空时MainForm.FireWriteText(outLine.Data,false);//将进程的输出信息转移}

上述代码基本囊括了对进程Process的操作。在C#工具箱中包括进程这一个组件。

转载于:https://www.cnblogs.com/liuxiaowei0543/p/3680708.html

C# 进程Process基本的操作说明相关推荐

  1. 进程(process)和线程(thread)

    进程(process)和线程(thread) 来源:阮一峰 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 其实做一个很好的类比,就可以把它们解释地清 ...

  2. Python 进程 Process 与线程 threading 区别 - Python零基础入门教程

    目录 一.Python 线程 threading 创建 二.Python 进程 Process 创建 三.Python 进程 Process 和线程 threading 区别 四.Python 进程 ...

  3. Python 进程 Process 模块 - Python零基础入门教程

    目录 一.Python 进程 Process 简介 二.Python 进程 Process 模块 三.Python 进程 Process 函数介绍 四.Python 进程 Process 使用 五.P ...

  4. 多线程(thread)+进程(Process)

    一个进程(Process)里面有多个线程(Thread) 总结:注意,线程开启不一定立即执行,由cpu调度执行

  5. 【Linux】什么是进程(process)?

    目录 进程与程序概念 描述进程-PCB Windows进程与Linux进程 Linux进程操作 子进程 父进程 创建进程(初识-fork) 进程与程序概念 在Linux系统中,触发任何一个事件时,系统 ...

  6. 进程process与线程thread

    进程:process是一个外理过程,即然是外理过程,那么它就有生命周期,从进程的启动,运行,直到运行结束,进程终止.进程是程序的执行实例,即运行中的程序,同时也是程序的一个副本,程序是放置于磁盘的,而 ...

  7. 并发编程——进程——Process对象的属性和方法

    pid属性和ppid属性 其实到现在为止,都是我说咱们是另外开启了一个进程,并没有实际证据证明,怎么证明呢? 我们知道,程序中的变量都是由id的,其实就是内存地址,那么,进程也可以查看自己的id,进程 ...

  8. 一个进程(Process)最多可以生成多少个线程(Thread)

    1.进程中创建线程的限制 默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程,但是内存当然不可能完全拿来作线程的栈,所以实际 ...

  9. 进程process和线程thread应用和区别——Python学习笔记12

    Subprocess subprocess主要是在Python中执行外部的程序和命令.在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序. subpr ...

最新文章

  1. 挡不住的AI成熟趋势
  2. openwrt安装编译
  3. session过期时间控制的一些常用方法
  4. wamp新建虚拟目录无法运行的解决方法
  5. 记录——《C Primer Plus (第五版)》第九章编程练习第八题
  6. 进程管理利器Supervisor--入门简介
  7. WordPress使用360CDN替换google服务,解决WordPress打开速度变慢问题
  8. python自动化实现QQ自动发说说
  9. Android Toast的时长
  10. 【整理】C#中GridView隐藏指定列的方法
  11. Techo TVP物联网开发者峰会青润的总结(带视频和完整未剪切音频版本)
  12. IP 分类地址、子网划分你还在混淆不清吗?别怕!今天全家桶来喽
  13. Python3 迁移怨声载道
  14. LruCache缓存方法
  15. zedgraph绘图(修改)
  16. 三角形外接球万能公式_三棱锥外接球万能公式 什么是旁心
  17. esp32的python教程步数采集_ESP32CAM micropython的操作指南
  18. 从海尔工业平台数字化案例看产业生态平台的几点分享
  19. 项目实战 之 vue3 + vite + pinia
  20. 机械转码,学习中讲讲感受

热门文章

  1. java的应用程序开发_开发一个Java应用程序(1)
  2. 西北工业大学matlab安装,西北工业大学Matlab实验报告.doc
  3. android 权限管理框架,Android 运行时权限管理最佳实践
  4. Python 基本输出
  5. undefined reference to `__errno‘ 解决办法
  6. oracle 酒店客户数量,浅谈经济型酒店行业的数据分析(二)
  7. php板块模板,有没有办法制作模板,但没有在板块php渲染它
  8. ppt文件限打开次数_PPT冷知识25条!看到第一条我就翻了车…
  9. php input 数组的值,如何获取2值表单输入数组到PHP数组中(How to get 2 value form input array into PHP array)...
  10. 北邮 复习 软件工程_软件工程期末复习北邮