在C#开发中,我们经常需要与其他应用程序进行交互,比如启动记事本、运行命令行工具或监控某个程序的状态。这时,C#进程控制就显得尤为重要。本文将带你从零开始,深入浅出地学习如何使用 System.Diagnostics.Process 类来启动、监控和控制外部进程。

在操作系统中,进程是正在运行的程序实例。每个进程都有独立的内存空间、系统资源和执行线程。在C#中,我们通过 System.Diagnostics.Process 类来代表和操作一个进程。
要启动一个外部程序,比如 Windows 自带的记事本(notepad.exe),只需几行代码:
using System;using System.Diagnostics;class Program{ static void Main() { // 创建一个新的 Process 实例 Process process = new Process(); // 设置要启动的程序 process.StartInfo.FileName = "notepad.exe"; // 启动进程 process.Start(); }}这段代码展示了最基本的 C#启动外部程序 的方式。你只需指定 FileName 属性,然后调用 Start() 方法即可。
很多时候我们需要向目标程序传递命令行参数,或者指定它的工作目录。例如,用记事本打开一个特定的文件:
Process process = new Process();process.StartInfo.FileName = "notepad.exe";process.StartInfo.Arguments = @"C:\example.txt"; // 传递文件路径作为参数process.StartInfo.WorkingDirectory = @"C:\"; // 设置工作目录process.Start();当你需要运行命令行工具(如 ping 或 ipconfig)并读取其输出时,可以启用重定向:
Process process = new Process();process.StartInfo.FileName = "cmd.exe";process.StartInfo.Arguments = "/c ipconfig";process.StartInfo.UseShellExecute = false; // 必须设为 false 才能重定向process.StartInfo.RedirectStandardOutput = true; // 重定向标准输出process.StartInfo.RedirectStandardError = true; // 重定向错误输出process.StartInfo.CreateNoWindow = true; // 不显示窗口process.Start();// 读取输出string output = process.StandardOutput.ReadToEnd();string error = process.StandardError.ReadToEnd();// 等待进程结束process.WaitForExit();Console.WriteLine("输出:\n" + output);if (!string.IsNullOrEmpty(error)){ Console.WriteLine("错误:\n" + error);}注意:UseShellExecute 必须设为 false 才能使用重定向功能。这是 C#进程管理 中非常关键的一点。
有时你需要确保某个进程执行完毕后再继续后续操作。可以使用 WaitForExit() 方法:
process.Start();process.WaitForExit(); // 阻塞当前线程,直到进程退出int exitCode = process.ExitCode;Console.WriteLine($"进程已退出,退出码:{exitCode}");退出码通常用于判断程序是否成功执行(0 表示成功,非0表示错误)。
Arguments 中,以防命令注入攻击。using 语句或手动调用 Dispose() 来释放进程资源。BeginOutputReadLine)避免阻塞主线程。通过本文,你已经掌握了 C# 中使用 Process 类进行 C#进程控制 的核心技能,包括启动程序、传递参数、捕获输出、等待结束等。无论你是想自动化任务、集成第三方工具,还是构建系统监控程序,这些知识都是基础且实用的。
记住,良好的 C#进程管理 不仅能提升程序功能,还能增强安全性和稳定性。现在,就去尝试写一个属于你自己的进程控制器吧!
本文由主机测评网于2025-12-13发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025127152.html