В настоящее время я работаю с объектом System.Timers.Timer в Powershell.
Проблема, с которой я столкнулся, заключается в том, что когда вы регистрируетесь на событии "Прошедшее"
Register-ObjectEvent -InputObject $timer -EventName Elapsed -SourceIdentifier ThirtySecTimer -Action $scriptblock
блок сценария будет работать в другом пространстве / потоке Powershell. Проблема здесь в том, что я хочу изменить объект таймера в блоке сценария и в основном создать цикл с более короткими интервалами, пока он не достигнет x секунд и сценарий не остановится.
$action={
$timer.stop()
Show-MsgBox -Prompt "time's up" #selfdefined function using Windows Forms
$timer.interval=$interval - 1000
$timer.start()
}
Я нашел возможность определять пространства выполнения, но не уверен, могу ли я работать с объектом таймера через самоопределенное пространство выполнения. Также я думаю, что использование runspaces немного переборщило с этой задачей.
Есть ли другой (более простой) способ заставить это работать? Если нет, можно ли управлять объектом таймера через самоопределенные пространства выполнения? (я, вероятно, сделаю это по-другому, если бы мне пришлось использовать пространства выполнения, но это хорошо знать на будущее)