来自另一个线程的GUI更新 - WPF Powershell

时间:2015-12-10 04:20:16

标签: wpf multithreading powershell

之前我问过这个问题,但我仍然遇到问题。真的希望我能得到一些帮助。我只需要能够从后台作业向我的Rich TextBox添加附加文本。如果我删除Start-Job -ScriptBlock { },它会在GUI线程上更新。如何从Start-Job更新我的richtextbox?

 Start-Job -ScriptBlock{
   $richTextBox1.AppendText('++++++++++++++++')
   $richTextBox1.Dispatcher.Invoke([action]{
   $richTextBox1.AppendText('-------------')
   },"Normal")
 }

1 个答案:

答案 0 :(得分:1)

我不是WPF中Powershell的大量用户,但是我了解你的帖子我认为我仍然可以提供帮助。

public void RunPowershell_Script()
      {
           Thread t = new Thread(new ThreadStart(
           delegate
              {

                 Start-Job -ScriptBlock{

                   this.Dispatcher.Invoke((Action)(() =>
                   {                   

                      //Any Element that you need to interact with variables
                      //or controls from the main application on the main
                      //dispatcher thread go here.

                      $richTextBox1.AppendText('++++++++++++++++')
                      $richTextBox1.AppendText('-------------')  

                   }));

                }

                  //Any final code can go here.

              }
            ));
           t.Start();
     }

我相信这应该有用,但你必须要玩。以上是访问最初创建RTF框的主调度程序线程的最佳方法。尝试一下,让我知道它是否仍然不起作用。