我创建了一个CMDHandler类来处理我在项目中拥有的所有CMD命令。
例如:
CMDHandler.Run(“ / c \”“ + DWClientSetupChainerV1 +” \“”);
CMDHandler.Run(“ taskkill / F / IM \” DWClientSetupChainerV1 .exe \“”);
尽管我的CMDHandler进程似乎从未关闭,因此无法启动第二个进程。有人知道我在做什么错吗? 仅供参考:并非总是使用Exitcode。
namespace Automated_Tests
{
class CMDHandler
{
private static readonly ILogger logger = LoggerFactory.Create(typeof(Program));
public int Run(string command)
{
var proc = new Process();
try
{
ProcessStartInfo startInfo = new ProcessStartInfo()
{
FileName = "CMD",
Arguments = command,
UseShellExecute = false
};
proc = Process.Start(startInfo);
proc.WaitForExit();
return proc.ExitCode;
}
catch (Exception ex)
{
logger.Log(LogLevel.Error, ex.Message);
}
finally
{
proc.Close();
}
return 0;
}
}
}
答案 0 :(得分:0)
我通过为CMDHandler.Run方法创建单独的任务找到了解决方法:
Task setupTask = new Task(() => CMDHandler.Run("/c \"" + DWClientSetupChainerV1 + "\""));
setupTask.Start();
Thread.Sleep(10000);
Task killSetupTask = new Task(() => CMDHandler.Run("/c taskkill /F /IM \"DWClientSetupChainerV1.exe\"", true));
killSetupTask.Start();
Task.WaitAll(setupTask, killSetupTask);