the*_*p3r 6 .net powershell sta
我在PowerShell中使用GUI,在点击某些组合框时我会抛出错误.
抛出错误后,我可以放下组合框列表并看到它的内容,但是如果我转移到同一个数据网格视图上的另一个combox,我会在看到下拉列表之前得到相同的初始错误.
我在TechNet PowerShell论坛中发布了这个,并获得了在单线程单元(STA)中运行GUI所需的答案.默认情况下,PowerShell在MTA中运行,但您可以-STA
在调用时使用该开关覆盖此(在v2.0中)powershell.exe
.
但是,我的GUI只是调用默认的PowerShell应用程序(在MTA模式下),所以我的问题是,有没有办法以编程方式从我的GUI /脚本内部设置apartmentstate?
如果没有,我的下一次尝试将是检测公寓状态并尝试从我的gui的初始加载重新启动我的GUI,例如:
powershell.exe -STA myguiprog.ps1
Run Code Online (Sandbox Code Playgroud)
编辑:
所以我的工作方式有效:
if ([threading.thread]::CurrentThread.GetApartmentState() -eq "MTA") {
& $env:SystemRoot\system32\WindowsPowerShell\v1.0\powershell.exe -sta $MyInvocation.ScriptName
}
Run Code Online (Sandbox Code Playgroud)
如果您安装了pscx,则可以使用Invoke-Apartment -Apartment STA -Expression { .... }
.
如果没有,请查看WPF和PowerShell - 第1部分(Hello World和欢迎来到WPF周),其中James使用STA创建了运行空间.另一个来源可能是PowerShell中的Asynchronicity.
或者一些关于PowerShell V1中自定义cmdlet Single Threaded Apartment的旧帖子.
归档时间: |
|
查看次数: |
3252 次 |
最近记录: |