WPF标签内容显示在执行

问题描述:

对不起,我是一个新手,当谈到WPF:WPF标签内容显示在执行

当我点击一个按钮,我想看看在标签中显示的一个消息功能启动时,和那么我想看到的功能完成时另一条消息显示。

在这里的代码,我只看到单击该按钮时,显示的最后一条消息的价值。可有人向我解释为什么?

由于这不起作用,我将如何去完成我真正想要的功能 - 查看一段时间内的消息(如“处理”),然后在函数完成时看到另一条消息(如“完成”) ?

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     MessageLabel.Content = "I never see this"; 

     System.Threading.Thread.Sleep(2000); 

     MessageLabel.Content = "I only see this"; 
    } 
} 

谢谢Blachshma!下面是代码,做什么,我想用BackgroundWorker的对象。

public partial class MainWindow : Window 
{ 
    private BackgroundWorker backgroundWorker1 = new BackgroundWorker(); 

    public MainWindow() 
    { 
     InitializeComponent(); 

     backgroundWorker1.WorkerReportsProgress = true; 
     backgroundWorker1.WorkerSupportsCancellation = false; 

     backgroundWorker1.DoWork += worker_DoWork; 
     backgroundWorker1.RunWorkerCompleted += worker_RunWorkerCompleted; 
    } 

    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
     MessageLabel.Content = "I see this now"; 

     if (backgroundWorker1.IsBusy != true) 
     { 
      backgroundWorker1.RunWorkerAsync(); 
     } 
    } 

    private void worker_DoWork(object sender, DoWorkEventArgs e) 
    { 
     System.Threading.Thread.Sleep(2000); 
    } 

    private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
    { 
     MessageLabel.Content = "and I see this too"; 
    } 
} 

看不到改变的原因是因为这是UI线程,这并不有机会刷新屏幕,直到后的标签被更新,第二次在所有运行。
您应该使用BackgroundWorker运行代码的“重”的一部分(例如睡眠+标签的更新)

快速例如与您的代码:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    MessageLabel.Content = "I never see this"; 

    BackgroundWorker bw = new BackgroundWorker(); 
    bw.DoWork += (s,a) => 
      { 
       Thread.Sleep(2000); 
      }; 
    bw.RunWorkerCompleted += (s, a) => 
      { 
       MessageLabel.Content = "I saw it now"; 
      }; 
    bw.RunWorkerAsync(); // Start BackgroundWorker 
+0

谢谢!这里是工作的代码: – Dudeman3000 2013-03-26 00:05:21