Powershell WPF运行空间-更改SyncHashtable中的值很慢?

Powershell WPF运行空间-更改SyncHashtable中的值很慢?,wpf,powershell,runspace,Wpf,Powershell,Runspace,我正在使用powershell wpf构建一个工具 我终于设法在一定程度上了解了运行空间,并成功地从运行空间更新了主窗体进度栏,哇 但是,当我触摸同步哈希表中的任何内容时,它看起来都非常慢。在不更新synchash中的标签和/或进度条的情况下,函数完成得更快。我还缺什么吗 我的运行空间代码基本上如下所示: $SyncHash = [hashtable]::Synchronized(@{ ProgressBar = $ProgressBar Window = $Window }) $R

我正在使用powershell wpf构建一个工具

我终于设法在一定程度上了解了运行空间,并成功地从运行空间更新了主窗体进度栏,哇

但是,当我触摸同步哈希表中的任何内容时,它看起来都非常慢。在不更新synchash中的标签和/或进度条的情况下,函数完成得更快。我还缺什么吗

我的运行空间代码基本上如下所示:

$SyncHash = [hashtable]::Synchronized(@{
ProgressBar = $ProgressBar
Window      = $Window
})

$Runspace = [runspacefactory]::CreateRunspace()
$Runspace.ApartmentState = "STA"
$Runspace.ThreadOptions = "ReuseThread"         
$Runspace.Open()
$Runspace.SessionStateProxy.SetVariable("syncHash", $syncHash)          
$SessionScript = [powershell]::Create().AddScript( { 
    for ($i = 0; $i -lt 100 ; $i++) {
        Start-Sleep -Seconds .1
        $SyncHash.Progress.Dispatcher.Invoke([action] { $SyncHash.Progress.Value = $i })
    }
})
$SessionScript.Runspace = $Runspace
$SessionScript.BeginInvoke()
例如,如果我注释掉这一行,更新进度条,这将更快地完成。。。。为什么