【问题标题】:PowerShell and WPF GUI freezePowerShell 和 WPF GUI 冻结
【发布时间】:2009-08-04 06:10:57
【问题描述】:

我有一个 PowerShell 函数可以在目录中查找 zip 文件,将其解压缩并重命名文件。该函数还更改状态栏项目以更新它所在的文件。我注意到,当它运行时,GUI 会冻结。

如何在不冻结的情况下运行函数并更新 GUI?

【问题讨论】:

标签: wpf powershell freeze


【解决方案1】:

不要在 UI 线程上执行昂贵的操作——使用后台工作线程。这是一个教程:http://dotnetperls.com/backgroundworker-introduction

【讨论】:

  • 理查德,你试过了吗?我用winforms做了。我没有运气,因为正如 2006 年的一篇文章所说,“问题是工作线程没有运行空间来运行命令”。所以例如$w.add_DoWork({ $global:i = 1 }) 没有将 1 分配给全局变量。我很好奇如何为它分配一个运行空间..
  • 我的意思是在后台线程上执行整个 Powershell 管道,而不仅仅是 zip 操作。如果他纯粹在 Powershell 中(使用 WPK 或其他东西)编写 GUI 应用程序,这有点困难,但这在当时非常罕见,而且在大多数情况下仍然如此。我假设他有一个普通的 WPF 应用程序,它将某些类似管理员的任务委派给 Posh。另一种选择是使用内置于 Posh v2 中的 Write-Progress 流,例如blogs.msdn.com/mediaandmicrocode/archive/2009/12/28/…
猜你喜欢
  • 1970-01-01
  • 2013-01-16
  • 2020-08-06
  • 2015-04-08
  • 2015-05-09
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
相关资源
最近更新 更多