我正在搜索如何检查是否使用Powershell打开winform表单,例如this response for VB.net。我正在使用两个运行空间,当我的表单打开时,我需要启动第二个运行空间。
我的第一个运行空间用于GUI。 UI创建完成后,我打开它
$CommonHashTable.MainForm.ShowDialog()
然后,我试图从PowerShell主线程测试这个窗体是否被打开(来自VB.net的snipet):
If Application.OpenForms().OfType(Of $CommonHashTable.MainForm).Any Then
... startsecondrunspace
答案 0 :(得分:1)
测试表单是否打开的更好方法可能是
if ($CommonHashTable.MainForm.IsHandleCreated) {
startsecondrunspace
}
Application.OpenForms()将是Application类而不是Form类的方法。我不确定是否有一个Application类的实例甚至能够使用该方法。如果有,我会想象它应该是这样的:
If ($ApplicationObject.OpenForms().OfType(Of $CommonHashTable.MainForm).Any) {
startsecondrunspace
}
答案 1 :(得分:0)
非常感谢,我创造了这个功能:
do {
RecordToLog -Message "Waiting..."
start-sleep -m 100
} until ($CommonHashTable.MainForm.IsHandleCreated)
startsecondrunspace
它在工作。