如何在wpf实现进度条

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using System.Threading;

namespace doWorker
{
    public partial class Form1 : Form
    {
        delegate void MyDelegate(int value);
        Thread t;//new一个新线程,以便用来更新ui的显示
int i = 0; public Form1() { InitializeComponent(); } // 在新的线程中做“需要长时间做的”工作 private void button1_Click(object sender, EventArgs e) { t = new Thread(doWork); t.Start(); } // 要长时间做的工作 void doWork() { MyDelegate d = new MyDelegate(setValue); while (true) { ++i; //----WPF---added by wonsoft.cn--- this.Dispatcher.Invoke(d, i); Thread.Sleep(100); } } // 更新用户界面 void setValue(int value) { label1.Text = value.ToString(); } // 终止线程的执行 private void button2_Click(object sender, EventArgs e) { t.Abort(); } } }

 要想让主线程更新UI的显示,可以通过新建一个线程,来控制算法,在适当的时间去更新UI的线程。

具体的Dispatcher可以参考http://www.cnblogs.com/chenxizhang/archive/2010/03/25/1694604.html

posted @ 2013-12-03 10:59  haiziguo  阅读(1707)  评论(0编辑  收藏  举报