Process.Close()不起作用,Process.CloseMainWindow()抛出System.InvalidOperationException

时间:2017-03-22 07:09:15

标签: c# .net invalidoperationexception

我试图通过使用Process.Start()打开一个excel文件,然后一段时间后我必须关闭打开的excel文件。这是代码。

def runSubProcess(self):
    p=subprocess.Popen(["python3.4.1","script.py args"],stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    output=p.communicate()[0]

我能够打开文件,但在process.CloseMainWindow()中,它会抛出异常“没有进程与此对象关联”。我已经尝试过process.Close()但它也没有用(没有抛出异常)。进程对象显示System.InvalidOperationException。请有人帮我解决这个问题。提前致谢

1 个答案:

答案 0 :(得分:0)

假设您希望在用户完成操作您希望excel打开的文件后继续执行代码,我建议您使用process.WaitForExit();

然后您可以在wait方法上设置超时,如下所示:

var process = new Process();
process.StartInfo = new ProcessStartInfo()
{
    UseShellExecute = true,
    FileName = file
};
process.Start();
process.WaitForExit(60000);

如果达到超时,则进程将停止并且输出可以通过添加以下内容来解析输出错误:

RedirectStandardError = true
RedirectStandardOutput = true

到您的StartInfo()对象