繁体   English   中英

使用 Start-Process 时 Invoke-Parallel 正在等待

[英]Invoke-Parallel is waiting when using Start-Process

有谁知道为什么Invoke-Parallel不是多线程? 当我运行这个循环时,它不会启动下一个脚本块,直到前一个脚本块完成。

注意我也在PoshRSJob上试过这个。

我正在为找到的每个文件运行 Java jar 文件。 如果你看这里,他们正在使用 Start-Process 命令并等待 rar.exe。

 . .\Invoke-Parallel.ps1

 $ScriptBlock = {
        start-Process -file java -ArgumentList @('-jar',"a:\conversion.jar",$_.FullName,"$($_.FullName).tmp") -Wait
 }

 ForEach ($file in (GCI -Path b:\*)) {
   Invoke-Parallel -InputObject $file -ScriptBlock $ScriptBlock -Throttle 5 
 }

*请注意,这只是一个简单的示例,我的原始脚本更复杂,但我将其缩小到此条目,这导致多线程不是多线程。

这些多线程工具( Invoke-ParallelPoshRSJob )需要流水线

我没有流水线化我的原始代码,因为我认为使用循环更干净。 但是使用 pipe 确实有效。

. .\Invoke-Parallel.ps1

$ScriptBlock = {
  start-Process -file java -ArgumentList @('-jar',"a:\conversion.jar",$_.FullName,"$($_.FullName).tmp") -Wait
 }

(GCI -Path b:\*) | Invoke-Parallel -InputObject $_ -ScriptBlock $ScriptBlock -Throttle 5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM