这里的知识范畴会包含线程的基础用法,线程和UI之间的交互,以及委托的基本用法。如果你还不了解这几点,可以参考一些其他资料,比如我先前写过的,在同一窗体中用子线程来控制进度条
http://blog.csdn.net/jinjazz/archive/2008/05/06/2397136.aspx
这里的应用稍微复杂一些,你可以先用Vs2005新建一个Windows Application,这个application包含两个窗体,一个Form1,为主窗体,一个Form2,为模态子窗体。Form1,中添加Button1,用来开启测试。Form2中添加进度条ProgressBar1和一个用来取消事务的按钮Button1。然后把如下代码贴入测试程序中的两个form里面。
Form1,主窗体
using System;
using System.Windows.Forms;
namespace WindowsApplication39
...{
public partial class Form1 : Form
...{
delegate void dShowForm();
Form2 frm = new Form2();
public Form1()
...{
this.InitializeComponent();
}
//显示窗体
void ShowForm()
...{
if (this.InvokeRequired)
...{
this.Invoke(new dShowForm(this.ShowForm));
}
else
...{
frm.ShowDialog(this);
}
}
//控制进度
void SetProgress()
...{
for (int i = 1; i <= 100; i++)
...{
if (frm.DialogResult == DialogResult.Cancel)
...{
//判断取消
break;
}
else
...{
//模拟进度
163.blog.jp
sxbjz.blog.jp
hzbjz.blog.jp
jnbjz.blog.jp
dybjz.blog.jp
hfbjz.blog.jp
labjz.blog.jp
czbjz.blog.jp
chuz.blog.jp
zzmz.blog.jp
jcbjz.blog.jp
nbbjz.blog.jp
frm.SetProgress(100, i);
System.Threading.Thread.Sleep(50);
}
}
}
private void button1_Click(object sender, EventArgs e)
...{
new System.Threading.Thread(new System.Threading.ThreadStart(ShowForm)).Start();
new System.Threading.Thread(new System.Threading.ThreadStart(SetProgress)).Start();
}
}
}