我对以下代码有问题
foreach ($ex in ("foo", "bar", "baz")) {
$timer = New-Object Timers.timer
$taction = {
Write-Host "Timer fired for: $ex"
}
$timer.Interval = 1000
$timer.AutoReset = $false
$timer.Start()
Register-ObjectEvent -InputObject $timer -EventName elapsed -SourceIdentifier "$ex" -Action $taction
}
此代码给出以下输出
Timer fired for: baz
Timer fired for: baz
Timer fired for: baz
但我想要它 foo、bar 和 baz。问题似乎是 $ex 变量最终被所有计时器读取,所以无论它有什么值,他们都得到它。如何在 $taction 中复制 $ex 的值以使其唯一?