c# - 执行后关闭控制台窗口
问题描述
我正在使用以下代码从 ac# 代码打开一个控制台程序
ProcessStartInfo startInfo = new ProcessStartInfo(@"exepath");
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.Arguments = string.Format("b{0} {1} {2}", i, var1, var2);
Process.Start(startInfo);
这将导致打开一个新的控制台窗口并从控制台执行代码。但我注意到,一旦执行完成,这个控制台窗口就没有关闭。打开的控制台程序的Program.cs只有这样
static void Main(string[] args)
{
Console.write("Executing....");
if (args == null || args.Length==0)
{
Console.write("No parameters....");
}
else
{
string batch = args[0];
int offset = Convert.ToInt16(args[1]);
int limit = Convert.ToInt16(args[2]);
Console.write("Found few parameters....");
ExecuteAFunction(offset, limit);
}
Console.write("End");
}
没有 Console.ReadLine 或等待输入的代码被写在这里。那么如何确保代码 Process.Start 打开的窗口在执行完成后关闭
解决方案
您要么需要等待过程完成,如下所示
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = "CMD.EXE";
//command may be on command window
p.Start(psi);
p.WaitForExit(); //wait for exit
或者应该关闭
Process myProcess = Process.Start(psi);
//close it
myProcess.CloseMainWindow();
myProcess.Close();
//or kill process
myProcess.Kill();
推荐阅读
- apache-spark - DataFrameReader 在读取 avro 文件时抛出“不支持的类型 NULL”
- jquery - Angular 6中jQuery数据表回调方法的单元测试
- python - 将布尔时间线绘制为水平条形图
- rpmbuild - rpmbuild 我没有指定的依赖项来自哪里?
- mongodb - 如何使用 Mongodb 验证器验证非空字段
- sql - insert into statements,如何快速插入记录
- javascript - 可调整大小的拆分 DIV Vue.js
- flutter - 如何在颤动中管理开关小部件的原生外观
- android - queryPurchases() 返回一个空列表
- html - 防止 Flexbox 变大,截断文本