等待一个Exec任务完成

3
我的一个msbuild目标的执行流程如下:
  1. 获取配置文件
  2. 使用这些配置文件启动窗口服务
  3. 执行服务特定任务
  4. 停止窗口服务
  5. 重复进行
问题在于,有时候服务停止可执行任务(Exec Command = "sc stop myservice")需要更长的时间,当"sc start myservice"被调用时,它会说服务已经运行。所以我的问题是:我该如何等待"exec"命令完成? 我尝试将每个可执行文件放入目标中,并使用"CallTarget"调用,并放置适当的"DependsOnTargets"或"AfterTargets",但它没有起作用。你能帮我吗?提前感谢你。

1
Exec会等待命令执行完成。 - stijn
问题在于Exec实际上完成了命令执行(他只是抛出了“sc stop myservice”),然后另一个exec开始工作。我为“sc start myservice”添加了一分钟的超时,问题得到解决。 - Oleg Novosad
所以问题并不是出在Exec上,而是出在sc上? - stijn
是的,很奇怪,我认为Exec会等待命令完全执行,但似乎Exec并不等待命令的最终“返回”。 - Oleg Novosad
我认为问题在于 sc stop 在服务真正停止之前就返回了,因此 Exec 也会立即返回(因为它等待完整执行,但在这种情况下“完整”对你来说不够)。 - stijn
我认为我遇到了与“Exec”和“npm update”相同的问题。下一个命令在“npm”命令完成之前运行。有什么解决办法吗? - Itai Bar-Haim
1个回答

0
问题在于Exec实际上已经完成了命令执行(他只是抛出了“sc stop myservice”),然后另一个exec开始工作。我为“sc start myservice”添加了一分钟的超时,问题得到解决。结果看起来像这样:
<Exec Command="sc stop myservice" ContinueOnError="true" />
<Exec Command="sc start myservice" ContinueOnError="true" Timeout="60000" />

超时对我完全没有任何作用! - Tobias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接