2012-05-29 183 views
2

只是一个快速的。我遇到了一个我创建的简单工具,它可以通过一个看起来显示正在使用的CPU百分比的小方块获取CPU使用时间(我已经为下面的代码剥离了GUI )。Powershell:冻结GUI

function loop 
{ 
$get = read-host 
for($start = 0; $start -le 100;$start++) 
{ 
cls 
$pro_percentage = Get-WmiObject win32_processor -computer $get -property Loadpercentage | select loadpercentage 
$percentage = "Processor usage is: " + $pro_percentage.loadpercentage + "%" 
$percentage 
} 
} 
loop 

还有几个其他位,我已经创建了GUI,但我注意到一个majour问题,而这也同样适用,我已经创建的其他GUI应用。每当按下'go'按钮以从对话框中启动脚本时,GUI将冻结。我在GUI中创建的菜单栏冻结,没有其他按钮可以按下。

我应该在不同的线程中运行每个函数吗?像那样的东西?

感谢

回答

5

尝试添加:

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

在循环。 Quick and dirty, however

+0

谢谢。要介意解释DoEvents()请吗?我在网上找到的文档是有限的 – obious

+1

DoEvents()刷新所有未决事件。因此,您的用户界面不必执行排队等待的所有待处理事件。另外,这个想法是:在PowerShell后台运行这段代码并监视作业状态。 – ravikanth

+0

强调*脏*。一个可怕的解决方案,一个几乎肯定会导致更多的问题比解决。 –