通过System.Diagnostics.Process类可启动和停止外部进程。使用Process.Start()启动程序,如Process.Start(“notepad.exe”)或配合ProcessStartInfo配置参数、工作目录等;停止进程时可调用Kill()强制终止或CloseMainWindow()尝试友好关闭,并结合WaitForExit()确保退出,最后调用Dispose()释放资源。示例中启动持续ping进程,用户按键后终止,完整控制进程生命周期。注意异常处理与资源管理。

在 C# 中启动和停止外部进程主要通过 System.Diagnostics.Process 类实现。这个类提供了丰富的 API 来控制外部程序的运行,比如启动记事本、命令行工具或其他可执行文件,并在需要时终止它。
启动外部进程
使用 Process.Start() 方法可以启动一个外部程序。你可以指定可执行文件路径,也可以传入参数。
常见用法示例:直接启动一个程序(如记事本):
Process process = Process.Start(“notepad.exe”);
启动带参数的程序(例如用记事本打开特定文件):
Process process = Process.Start(“notepad.exe”, “C:test.txt”);
更灵活的方式是使用 ProcessStartInfo,便于配置工作目录、隐藏窗口等:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = “ping”;
startInfo.Arguments = “www.baidu.com”;
startInfo.UseShellExecute = false; // 允许重定向输入输出
startInfo.CreateNoWindow = true; // 不显示窗口
Process process = Process.Start(startInfo);
停止外部进程
要关闭已启动的进程,可以调用 Kill() 或 Kill(true) 方法强制结束,或者使用 CloseMainWindow() 尝试友好退出。
强制终止进程(立即结束):
process.Kill();
尝试发送关闭消息给主窗口(模拟用户点击“关闭”按钮):
bool closed = process.CloseMainWindow();
// 如果没有响应,再调用 Kill()
确保资源释放,记得调用 WaitForExit() 等待进程真正退出:
process.Kill();
process.WaitForExit(); // 可选:等待结束
process.Dispose();
完整示例:启动并停止一个进程
下面是一个完整的控制 ping 命令的例子:
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
ProcessStartInfo info = new ProcessStartInfo(“ping”);
info.Arguments = “www.google.com -t”; // 持续 ping
info.UseShellExecute = false;
info.CreateNoWindow = true;
Process process = Process.Start(info);
Console.WriteLine(“按任意键停止 ping…”);
Console.ReadKey();
if (!process.HasExited)
{
process.Kill();
process.WaitForExit();
}
process.Dispose();
Console.WriteLine(“进程已结束。”);
}
}
基本上就这些。掌握 Process.Start 和 Kill/CloseMainWindow 的使用,就能有效控制外部程序的生命周期。注意处理异常(如程序不存在),并在不需要时释放资源。不复杂但容易忽略细节。
以上就是C# 怎么启动和停止一个外部进程_C# 外部进程启动停止方法指南的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441587.html
微信扫一扫
支付宝扫一扫