Я работаю над графическим интерфейсом в PowerShell, где я выдавал ошибки при щелчке по определенным спискам со списком.
После того, как ошибка была выброшена, я мог опустить список combobox вниз и увидеть его содержимое, но если бы я перешел на другой combox в том же datagridview, я бы получил ту же самую начальную ошибку, прежде чем я смогу увидеть раскрывающийся список.
Я разместил это на форумах TechNet PowerShell и получил ответ, который мне нужен для запуска моего графического интерфейса в однопоточной квартире (STA). PowerShell по умолчанию запускается в MTA, но вы можете перезаписать его (в версии 2.0), используя переключатель -STA
при вызове powershell.exe
.
Однако,мой графический интерфейс просто вызывает приложение PowerShell по умолчанию (в режиме MTA) , поэтому у меня вопрос, есть ли способ программно установить состояние квартиры изнутри моего графического интерфейса / сценария?
Если нет, моей следующей попыткой будет определить состояние квартиры и попытаться перезапустить мой графический интерфейс из начальной загрузки моего графического интерфейса примерно так:
powershell.exe -STA myguiprog.ps1
Изменить:
Итак, мой обходной путь ДЕЙСТВИТЕЛЬНО работает:
if ([threading.thread]::CurrentThread.GetApartmentState() -eq "MTA") {
& $env:SystemRoot\system32\WindowsPowerShell\v1.0\powershell.exe -sta $MyInvocation.ScriptName
}