我正在为我的工作制作报告工具。该工具有4个表,每隔几分钟刷新一次。刷新时,它会创建一个后台作业来查询下一次刷新的新信息。在手动刷新期间,我想使表格变灰,并让它在恢复功能之前等待后台作业完成。一切都很好。 (以下代码)
让我完全困惑和困惑的是灰色过程似乎滞后了。当它自己运行时它瞬间完成。然而随着睡眠线后来它似乎做了1个表,然后睡了一秒..然后再多吃2个..然后睡一秒钟。并且它与睡眠间隔一致。这意味着如果我将睡眠间隔设置为3秒,我的表格的分阶段灰色会错开3秒而不是1秒。
所以我正在寻找一个更好的解决方案,也不会想知道PowerShell如何在完成前一个代码之前转移到下一行代码。
$myWindow.add_KeyDown({
if ($_.keycode -eq "F5") {
for ($i=0; $i-lt 4; $i++ ) {
foreach ($row in $myDataGrid[$i].Rows) {
$row.DefaultCellStyle.BackColor = "GRAY"
$row.DefaultCellStyle.ForeColor = "BLACK"
}
}
while ((get-job -Name "ticker").state -ne "Completed") {sleep 1}
$out = Receive-Job -name "ticker"
Get-Job -name "ticker" | Remove-Job
refresh $($out) #updates the tables
Start-Job -Name "ticker" -ScriptBlock $query -ArgumentList $args
}
})