C# 进程Process基本的操作说明
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基本的操作说明相关推荐
- 进程(process)和线程(thread)
进程(process)和线程(thread) 来源:阮一峰 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握. 其实做一个很好的类比,就可以把它们解释地清 ...
- Python 进程 Process 与线程 threading 区别 - Python零基础入门教程
目录 一.Python 线程 threading 创建 二.Python 进程 Process 创建 三.Python 进程 Process 和线程 threading 区别 四.Python 进程 ...
- Python 进程 Process 模块 - Python零基础入门教程
目录 一.Python 进程 Process 简介 二.Python 进程 Process 模块 三.Python 进程 Process 函数介绍 四.Python 进程 Process 使用 五.P ...
- 多线程(thread)+进程(Process)
一个进程(Process)里面有多个线程(Thread) 总结:注意,线程开启不一定立即执行,由cpu调度执行
- 【Linux】什么是进程(process)?
目录 进程与程序概念 描述进程-PCB Windows进程与Linux进程 Linux进程操作 子进程 父进程 创建进程(初识-fork) 进程与程序概念 在Linux系统中,触发任何一个事件时,系统 ...
- 进程process与线程thread
进程:process是一个外理过程,即然是外理过程,那么它就有生命周期,从进程的启动,运行,直到运行结束,进程终止.进程是程序的执行实例,即运行中的程序,同时也是程序的一个副本,程序是放置于磁盘的,而 ...
- 并发编程——进程——Process对象的属性和方法
pid属性和ppid属性 其实到现在为止,都是我说咱们是另外开启了一个进程,并没有实际证据证明,怎么证明呢? 我们知道,程序中的变量都是由id的,其实就是内存地址,那么,进程也可以查看自己的id,进程 ...
- 一个进程(Process)最多可以生成多少个线程(Thread)
1.进程中创建线程的限制 默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程,但是内存当然不可能完全拿来作线程的栈,所以实际 ...
- 进程process和线程thread应用和区别——Python学习笔记12
Subprocess subprocess主要是在Python中执行外部的程序和命令.在Python中,我们通过标准库中的subprocess包来fork一个子进程,并运行一个外部的程序. subpr ...
最新文章
- 挡不住的AI成熟趋势
- openwrt安装编译
- session过期时间控制的一些常用方法
- wamp新建虚拟目录无法运行的解决方法
- 记录——《C Primer Plus (第五版)》第九章编程练习第八题
- 进程管理利器Supervisor--入门简介
- WordPress使用360CDN替换google服务,解决WordPress打开速度变慢问题
- python自动化实现QQ自动发说说
- Android Toast的时长
- 【整理】C#中GridView隐藏指定列的方法
- Techo TVP物联网开发者峰会青润的总结(带视频和完整未剪切音频版本)
- IP 分类地址、子网划分你还在混淆不清吗?别怕!今天全家桶来喽
- Python3 迁移怨声载道
- LruCache缓存方法
- zedgraph绘图(修改)
- 三角形外接球万能公式_三棱锥外接球万能公式 什么是旁心
- esp32的python教程步数采集_ESP32CAM micropython的操作指南
- 从海尔工业平台数字化案例看产业生态平台的几点分享
- 项目实战 之 vue3 + vite + pinia
- 机械转码,学习中讲讲感受
热门文章
- java的应用程序开发_开发一个Java应用程序(1)
- 西北工业大学matlab安装,西北工业大学Matlab实验报告.doc
- android 权限管理框架,Android 运行时权限管理最佳实践
- Python 基本输出
- undefined reference to `__errno‘ 解决办法
- oracle 酒店客户数量,浅谈经济型酒店行业的数据分析(二)
- php板块模板,有没有办法制作模板,但没有在板块php渲染它
- ppt文件限打开次数_PPT冷知识25条!看到第一条我就翻了车…
- php input 数组的值,如何获取2值表单输入数组到PHP数组中(How to get 2 value form input array into PHP array)...
- 北邮 复习 软件工程_软件工程期末复习北邮