Асинхронное событие не запускается в Powershell Core 6

У меня есть модуль powershell, который использует события асинхронного таймера для мониторинга и запуска действий.

Он отлично работает при запуске в терминале powershell в Windows.

Мне было интересно узнать, будет ли он работать как есть с использованием Powershell Core на Raspberry Pi. Это почти так!

Асинхронные события, похоже, не срабатывают правильно, но затем я заметил, что, если я взаимодействую с терминалом, я начну видеть, как выплевываются подробные операторы журнала, а затем срабатывают асинхронные события. Так, например, я знаю, что мой скрипт должен добавить событие таймера для срабатывания через 10 секунд, но оно никогда не сработает, но если я взаимодействую с терминалом (достаточно даже нажатия клавиши Esc), подробные журналы будут выплевывать, я можно увидеть регистрируемое событие таймера, и оно успешно сработает.

Есть мысли по этому поводу? Любые идеи о том, как инициировать сценарий, чтобы он работал должным образом, и как он работает под терминалом powershell в Windows? Моя идея обходного пути состояла бы в том, чтобы иметь синхронный бесконечный цикл, который будет запускаться после запуска асинхронной части, чтобы поддерживать жизнь и имитировать мое взаимодействие с терминалом. Но было бы лучше, если бы был более чистый способ начать работу на Raspberry Pi и заставить его работать правильно.


person Cathal    schedule 04.06.2018    source источник
comment
Просто чтобы закрыть этот вопрос, поскольку он был открыт без комментариев в течение года. Я также задавал этот вопрос на форуме MS PS Core, но никаких предложений о том, почему он отлично работает в сеансе терминала Windows PowerShell, но не работает на терминале Linux PS. Поэтому я пошел дальше и реализовал обходной путь, который достаточно аккуратен и приемлем для IMO. Для тех, кто читает это и имеет аналогичные проблемы, вы можете просмотреть код в этом проекте и посмотреть, как я заставил его работать: github.com/cathalmchale/hue   -  person Cathal    schedule 05.06.2019


Ответы (1)


Решение или обходной путь для фоновых событий Linux PS Core, которые не запускаются так же, как в PowerShell для Windows, см. в этом проекте: https://github.com/cathalmchale/hue

В частности, посмотрите этот модульный тест Pester: https://github.com/cathalmchale/hue/blob/master/Hue.Script/Hue.Script.Tests.ps1

Тест в стиле BDD с нотацией «Дано, Когда, Затем» задает и отвечает на вопрос: Дано: модуль сценария, работающий в Powershell Core на Pi. Когда: запуск монитора освещения в режиме проверки активности. Затем: Вводится цикл опроса.

Этот бесконечный цикл опроса позволяет запускать фоновые события в сеансе Linux PS Core Terminal.

person Cathal    schedule 05.06.2019