我从C#调用命令行进程,从某个远程服务器执行更新。当它可以找到远程服务器并从中获取数据时工作正常。如果没有连接到网络也可以正常工作。
但是,当远程服务器无法访问时,外部进程将尝试无限期地获取数据,并且没有命令行选项来指定超时。因此,在尝试15秒后,我在进程中添加了强制终止。
using (var process = new Process {...})
{
process.Start();
if (!process.WaitForExit(15 * 1000))
{
process.Kill();
}
}
我可以看到在调用process.Kill()
时进程被终止,但是在退出using
范围时(即在处理进程时)它会挂起。
这有什么问题?我错过了什么来确保这个过程正确被杀?
谢谢!
修改
流程StartInfo是
FileName = command,
Arguments = arguments,
WorkingDirectory = workDir,
CreateNoWindow = true,
UseShellExecute = false