Powershell - 从启动作业更新文本框

时间:2015-12-08 20:34:55

标签: wpf multithreading powershell start-job

我一直在努力将我用C#编写的WPF程序转移到PowerShell上,而我在使用Start-Job的RichTextBox中附加文本时遇到了一些问题看起来我可以调用Set-RichTextBox在哪里,除了scriptblock内部。有解决方法吗?

#outside the ScriptBlock
Set-RichTextBox -message "This does work"
#outside the ScriptBlock

$job = Start-Job -ScriptBlock {

function Set-RichTextBox
{
  param (
     [System.String]
     $message
  )
     $richTextBox1.Dispatcher.invoke([action]{       
     $richTextBox1.AppendText($message)      
     },"Normal")
 }

  Set-RichTextBox -message "This doesn't work"
  }

除了在Start-Job中,我可以在任何地方调用RichTextBox,我没有收到任何错误消息。知道我在这里做错了吗?

1 个答案:

答案 0 :(得分:1)

对我来说似乎有效:

Remove-Job *

$job = Start-Job -Name Test -ScriptBlock {

    function Set-RichTextBox
    {
        param ([string]$message)

        $message
    }

    Set-RichTextBox -message "This should work..."
}

Start-Sleep 5
Get-Job |Where-Object {$PSItem.Name -eq "Test"} |Receive-Job
你可能想看看: PowerShell: Creating Custom Objects

这些可能相关也可能不相关: