Асинхронное событие не запускается в Powershell Core 6
У меня есть модуль powershell, который использует события асинхронного таймера для мониторинга и запуска действий.
Работает нормально, когда запускается в терминале powershell в windows.
Мне было интересно узнать, будет ли он работать, как есть, с использованием Powershell Core на Raspberry Pi. Это почти делает!
Похоже, что асинхронные события не запускаются правильно, но затем я заметил, что, если я буду взаимодействовать с терминалом, я начну видеть, как выпадают подробные инструкции журнала, и затем сработают асинхронные события. Так, например, я знаю, что мой сценарий должен добавить событие таймера для запуска через 10 секунд - но оно никогда не сработает - но если я буду взаимодействовать с терминалом (даже достаточно нажать клавишу Esc), подробные журналы будут выплевываться, я может видеть событие таймера, которое регистрируется, и оно успешно срабатывает.
Есть мысли по этому поводу? Любые идеи о том, как запустить сценарий, чтобы он работал так, как ожидалось, и как он работает под терминалом powershell в Windows? Моя идея для обходного пути состояла бы в том, чтобы иметь синхронный бесконечный цикл, который запускался бы после того, как асинхронная часть была запущена, чтобы поддерживать жизнь и подражать мне, взаимодействуя с терминалом. Но я бы предпочел, чтобы на Raspberry Pi был более понятный способ, чтобы все работало правильно.
0 ответов
Для решения / обходного пути для Linux PS Core фоновые события не запускаются так же, как в PowerShell для Windows, см. Этот проект: https://github.com/cathalmchale/hue
В частности, смотрите этот тестовый модуль Пестера: https://github.com/cathalmchale/hue/blob/master/Hue.Script/Hue.Script.Tests.ps1
Тест в стиле BDD с нотацией "Given, When, Then" задает и отвечает на вопрос: "Given": модуль сценария, работающий в Powershell Core на Pi. Когда: Запустите монитор подсветки в режиме поддержания активности. Затем: цикл опроса введен.
Этот бесконечный цикл опроса позволяет запускать фоновые события в сеансе терминала Linux PS Core.