我已经被这个问题困扰了大约2个月了。我有2种不同的GUI,一种是Windows窗体,另一种是WPF。它们每个都有我想每隔几秒钟刷新和更新的文本框。我已经完成了这一工作,但是,在循环中同时使用$Form.Refresh()
和textbox.Refresh()
方法意味着您无法与GUI的其余选项卡和按钮进行交互,因为我不得不将其置于无限循环中。每几秒钟更新一次文本框。
我已经探索过start-job
来为文本框进行数据收集,但是我仍然坚持尝试更新文本框而不用循环脚本来使用Receive-Job
。
有人可以告诉我如何独立更新单元格,同时仍然允许与GUI进行其他交互。现在,我有一个陷入无限循环的外部GUI,可以显示数据,而主GUI可以自由执行其余工作,并在完成后杀死数据GUI。
答案 0 :(得分:0)
我最终在GUI中进行无限循环的最简单的事情是将其添加到循环中。
[System.Windows.Forms.Application]::DoEvents()
它又快又脏,但是可以用。因此,您可以在等待Receive-job
的循环中使用它。
另一方面,乔布斯的效率不是很高。每个作业都会创建一个单独的流程,当您有多个作业时可能会变得混乱。如果遇到这种情况,请签出PowerShell Runspaces。我知道处理多线程的最好方法。