Board logo

标题: [问题求助] powershell如何在form中点击按钮时不让窗口卡死 [打印本页]

作者: Royo    时间: 2022-12-1 09:37     标题: powershell如何在form中点击按钮时不让窗口卡死

我在form中设置的某个按钮是一个循环,我点击按钮后必须要等待循环执行完才能操作form。我了解到可以通过start-job新开一个进程然后加入Doevents实现,我目前遇到的困难是object类型的变量如何传参?百度了一圈貌似无法实现,这样的话有无其他方法让form不卡死?
作者: went    时间: 2022-12-1 14:15

使用powershell.Create创建线程,addArgument传递参数
  1. cls
  2. [void][System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
  3. $job1 = {
  4.     param($btn,$counter)
  5.     $counter..0 | foreach {
  6.         $btn.Text = $_
  7.         Start-Sleep -Milliseconds 100
  8.     }
  9. }
  10. $f = New-Object "System.Windows.Forms.Form"
  11. $f.Width = 210
  12. $f.Height = 200
  13. $f.StartPosition = 'CenterScreen'
  14. $b = New-Object 'System.Windows.Forms.Button'
  15. $b.Location = New-Object 'System.Drawing.Point'(50,50)
  16. $b.Width = 100
  17. $b.Height = 50
  18. $b.Text = 'Click'
  19. $b.add_Click({
  20.     [powershell]::Create().
  21.         AddScript($job1).    #脚本
  22.         AddArgument($this).  #参数1 btn
  23.         AddArgument(200).    #参数2 counter
  24.         BeginInvoke()
  25. })
  26. $f.Controls.Add($b)
  27. $f.ShowDialog()
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2