我用process调用一个dos命令,但是这个dos命令是不能自己退出的。(比如说一个死循环在干一件事情),平时用的时候可以按 ctrl+C 退出,也可以关闭dos窗口结束。现在我想将其放入C#中运行,我设置了程序
p1 = new Process();
p1.StartInfo.FileName = "cmd.exe"; //設定程序名
p1.StartInfo.Arguments = "/c " + "abc.exe"; //設定程式執行參數
p1.StartInfo.UseShellExecute = false; //關閉Shell的使用
p1.StartInfo.RedirectStandardInput = true; //重定向標準輸入
p1.StartInfo.RedirectStandardOutput = true; //重定向標準輸出
p1.StartInfo.RedirectStandardError = true; //重定向錯誤輸出
p1.StartInfo.CreateNoWindow = false; //設置顯示窗口
p1.Start();这样的话,abc启动时显示一个dos窗口,任务管理器中也可以看到这个进程。当程序执行到
p1.CloseMainWindow();
时,可以看到窗口关闭了,abc进程也消失了但是我不想在程序调用时显示这个讨厌的dos窗口,所以我在初始化时将
p1.StartInfo.CreateNoWindow = true;
可是这样的话,虽然不出现dos窗口了,但是执行
p1.CloseMainWindow();
或 p1.kill() 或 p1.Close() 或 p1.Dispose() 等等都无法正常结束abc进程了,其在任务管理器中一直存在,并且作业依然在做!我该怎么处理,大家指点一下,谢谢!
p1 = new Process();
p1.StartInfo.FileName = "cmd.exe"; //設定程序名
p1.StartInfo.Arguments = "/c " + "abc.exe"; //設定程式執行參數
p1.StartInfo.UseShellExecute = false; //關閉Shell的使用
p1.StartInfo.RedirectStandardInput = true; //重定向標準輸入
p1.StartInfo.RedirectStandardOutput = true; //重定向標準輸出
p1.StartInfo.RedirectStandardError = true; //重定向錯誤輸出
p1.StartInfo.CreateNoWindow = false; //設置顯示窗口
p1.Start();这样的话,abc启动时显示一个dos窗口,任务管理器中也可以看到这个进程。当程序执行到
p1.CloseMainWindow();
时,可以看到窗口关闭了,abc进程也消失了但是我不想在程序调用时显示这个讨厌的dos窗口,所以我在初始化时将
p1.StartInfo.CreateNoWindow = true;
可是这样的话,虽然不出现dos窗口了,但是执行
p1.CloseMainWindow();
或 p1.kill() 或 p1.Close() 或 p1.Dispose() 等等都无法正常结束abc进程了,其在任务管理器中一直存在,并且作业依然在做!我该怎么处理,大家指点一下,谢谢!
p1.StartInfo.FileName = "abc.exe";不行吗?