在Powershell中同时处理

时间:2018-06-27 19:42:54

标签: powershell

我已经被这个问题困扰了大约2个月了。我有2种不同的GUI,一种是Windows窗体,另一种是WPF。它们每个都有我想每隔几秒钟刷新和更新的文本框。我已经完成了这一工作,但是,在循环中同时使用$Form.Refresh()textbox.Refresh()方法意味着您无法与GUI的其余选项卡和按钮进行交互,因为我不得不将其置于无限循环中。每几秒钟更新一次文本框。

我已经探索过start-job来为文本框进行数据收集,但是我仍然坚持尝试更新文本框而不用循环脚本来使用Receive-Job

有人可以告诉我如何独立更新单元格,同时仍然允许与GUI进行其他交互。现在,我有一个陷入无限循环的外部GUI,可以显示数据,而主GUI可以自由执行其余工作,并在完成后杀死数据GUI。

1 个答案:

答案 0 :(得分:0)

我最终在GUI中进行无限循环的最简单的事情是将其添加到循环中。

[System.Windows.Forms.Application]::DoEvents()

它又快又脏,但是可以用。因此,您可以在等待Receive-job的循环中使用它。

另一方面,乔布斯的效率不是很高。每个作业都会创建一个单独的流程,当您有多个作业时可能会变得混乱。如果遇到这种情况,请签出PowerShell Runspaces。我知道处理多线程的最好方法。