我正在使用PowerShell ISE (PS版本5.0)。如果我运行以下代码:
Write-Host "This"
它输出:
This
如果我像这样修改脚本:
Write-Host "That"
它的输出结果为:
That
太好了。如预期所料。现在,如果我有这段代码:
$Form = New-Object System.Windows.Forms.Form
$Timer = New-Object System.Windows.Forms.Timer
$Timer.Add_Tick(
{
&{
Write-Output "Here"
$Form.Close()} | Write-Host
})
$Timer.Interval = 3000
$Timer.start()
$result = $Form.ShowDialog()
它的输出结果是:
Here
如果我更改脚本中的任何内容,比如将
"Here"
更改为"There"
或将$Timer.Interval = 3000
更改为$Timer.Interval = 4000
并运行它,它会出现两个意外的情况:1)不是按照预期的时间显示窗体,而是在屏幕上短暂闪现;2)输出原始的Here
而不是There
。如果我关闭ISE并重新打开它,则脚本会按预期运行。发生了什么?
$timer
,否则原始事件注册仍将存在。 - Mathias R. Jessen