【发布时间】:2014-09-08 12:16:08
【问题描述】:
foreach (var process in Process.GetProcessesByName("SnippingTool"))
{
process.Kill();
Thread.Sleep(5000);
process.Start();
}
我正在尝试使用 Process 重新启动 .exe。为什么这不起作用?认为它应该能够找到该进程,因为它成功杀死它。
收到此错误:
System.InvalidOperationException:无法启动进程,因为文件 未提供姓名
编辑:澄清一下,process.Kill 有效,是 Start() 获得异常。
【问题讨论】:
-
我认为归结为您获取进程的方式意味着永远不需要可执行路径(因为它已经在运行),因此永远不会设置文件名参数跨度>
-
在 Process.Start 执行前检查 FilName 和 WorkDirectory 属性是否设置正确。
-
process.Kill() 需要 ProcessId。它不需要进程物理位置。并且 GetProcessesByName 不提供进程位置。所以那个 process.Start() 不能重启进程。