GUI在启动睡眠循环期间冻结

时间:2019-08-27 23:24:03

标签: forms powershell

我有一个运行进度栏的表单。我需要等待32分钟,因此我在GUI窗体上使用ProgressBar来显示持续的进度以及消息。我执行“做/做”,执行1分钟的睡眠,递增并重复,直到变量递增到32(因此过去了32分钟)。但是,该表格似乎冻结并锁定了,无法移动或最小化,而运行1分钟的睡眠(基本上是32分钟)...

我尝试过Start-Job和Wait-Job,但是感觉我没有正确利用它。从脚本的角度来看,我不太了解如何有效地睡1分钟并将其作为另一项工作来处理。

处理循环和睡眠的函数:

function WaitSync {
   #Removes all of the old controls
   foreach ($control in $aControls2) {$MainForm.Controls.Remove($control)}

   #Adds the progress bar and message
   $MainForm.Controls.Add($pbSync)
   $MainForm.Controls.Add($lPhrases)

   #Initializes the increment variable
   $z = 0

   while ($z -le 33) {
      $lPhrases.Text = "Updated Text..."
      $pbSync.Value = $z
      $pbSync.Refresh()
      Start-Sleep -Seconds 60
      $z++
   }

   #Adds the Complete Button to close the Form
   $MainForm.Controls.Add($bComplete)
}

我如何做到这一点,以便在进度条处理过程中(等待32分钟)至少可以最小化表单?

0 个答案:

没有答案