Considerate questo codice:Nuova chiusura in scriptblock
PS> $timer = New-Object Timers.Timer
PS> $timer.Interval = 1000
PS> $i = 1;
PS> Register-ObjectEvent $timer Elapsed -Action { write-host 'i: ' $i }.GetNewClosure()
PS> $timer.Enabled = 1
i: 1
i: 1
i: 1
...
# wait a couple of seconds and change $i
PS> $i = 2
i: 2
i: 2
i: 2
ho pensato che quando creo nuova chiusura ({ write-host 'i: ' $i }.GetNewClosure()
) valore $i
sarà legato a questa chiusura. Ma non in questo caso. Dopo aver modificato il valore, write-host
assume il nuovo valore.
D'altra parte, questo funziona:
PS> $i = 1;
PS> $action = { write-host 'i: ' $i }.GetNewClosure()
PS> &$action
i: 1
PS> $i = 2
PS> &$action
i: 1
Perché non funziona con il Register-ObjectEvent
?
sarebbe utile se è stato specificato quale risultato che vi aspettavate e che cosa risultato che abbiamo ottenuto. – Richard
aggiunto uscite quindi spero sia chiaro .. – stej
Sembra un bug per me o almeno dovremmo avere un modo per configurarlo. Ho trovato già inviato: https://connect.microsoft.com/PowerShell/feedback/details/541754/getnewclosure-doesnt-work-on-register-objectevent# –