gpt4 book ai didi

.net - 有没有办法以编程方式将 ApartmentState 设置为 STA?

转载 作者:行者123 更新时间:2023-12-04 14:33:52 26 4
gpt4 key购买 nike

我正在 PowerShell 中处理 GUI,当单击某些组合框时我会抛出错误。

抛出错误后,我可以放下组合框列表并查看其内容,但是如果我切换到同一个 datagridview 上的另一个组合框,我会在看到下拉列表之前得到相同的初始错误。

我在 TechNet PowerShell 论坛上发布了这篇文章,并得到了在单线程单元 (STA) 中运行 GUI 所需的答案。默认情况下,PowerShell 在 MTA 中运行,但您可以使用 -STA 覆盖它(在 v2.0 中)。调用时切换powershell.exe .

但是,我的 GUI 只是调用默认的 PowerShell 应用程序(在 MTA 模式下)所以我的问题是,有没有办法从我的 GUI/脚本内部以编程方式设置公寓状态?

如果没有,我的下一个尝试将是检测公寓状态并尝试从我的 gui 的初始加载中重新启动我的 GUI,如下所示:

powershell.exe -STA myguiprog.ps1

编辑:

所以我的解决方法确实有效:
if ([threading.thread]::CurrentThread.GetApartmentState() -eq "MTA") {
& $env:SystemRoot\system32\WindowsPowerShell\v1.0\powershell.exe -sta $MyInvocation.ScriptName
}

最佳答案

如果您有 pscx已安装,您可以使用 Invoke-Apartment -Apartment STA -Expression { .... } .

如果没有,请查看 WPF & PowerShell – Part 1 ( Hello World & Welcome to the Week of WPF ) James 在其中使用 STA 创建运行空间。另一个来源可能是 Asynchronicity in PowerShell .

或者一些关于自定义 cmdlet 的旧帖子 Single Threaded Apartment in PowerShell V1 .

关于.net - 有没有办法以编程方式将 ApartmentState 设置为 STA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6362816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com