提问人:davidprogrammercdn 提问时间:11/17/2023 最后编辑:davidprogrammercdn 更新时间:11/17/2023 访问量:31
等待函数退出,然后再继续在 PowerShell 中进行 foreach 循环
Wait for function to exit before continuing foreach loop in PowerShell
问:
我有一个在循环中被调用的函数列表。
有些在RunspacePool(多线程)中运行,而另一些则在主线程中运行。在主线程中运行的是带有按钮的表单。$listoffunctions
我需要在主线程(交互式表单)中运行的函数完成,然后才能继续使用列表中的其他函数进行 foreach 循环。
$listoffunctions
包含函数名称的字符串,其参数有时如 and 和 。RichTextDocumentNewContext -Show
UseStoreOpenWith -Hide
PostActions
$WinAPIList
包含函数名称列表,这些函数名称调用带有按钮(窗体 XAML 和按钮)的窗体,供用户与之交互。因此,它包含函数名称,如 和 。Foreach 循环应等待用户完全完成与此窗体的交互,并等待其后台命令完成。ScheduledTasks -Disable
ScheduledTasks -Enable
foreach ($singlefunction in $listoffunctions)
{
# PowerShell
$PowerShell = [PowerShell]::Create()
$PowerShell.RunspacePool = $RunspacePool
# These functions run in main thread which names are found in WinAPIList
if ($WinAPIList -contains $singlefunction){
[void]$PowerShell.AddScript({Write-Output "Main Thread Run"})
# This runs the function but I need it to wait for it to end before continue foreach loop
#$sb = [scriptblock]::Create($singlefunction)
#& $sb
# This does not work
Start-Job -Name Job1 -ScriptBlock {$singlefunction}
Wait-Job -Name Job1
}
# These function are run in the RunspacePool (Multithread)
else{
# Add script (function) to run
[void]$PowerShell.AddScript($singlefunction)
}
}
这是行不通的
# This does not work
Start-Job -Name Job1 -ScriptBlock {$singlefunction}
Wait-Job -Name Job1
答: 暂无答案
评论