Есть ли способ программно установить для ApartmentState значение STA?

Я работаю над графическим интерфейсом в 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
}
6
задан CDspace 28 December 2016 в 17:08
поделиться