欢迎光临

木子屋

标题: 使用 BackgroundWorker 进行多线程编程

作者: dnawo

日期: 2009-05-04 02:52 PM

分类: Win编程

内容: 在WinForm开发过程中，如果没有采用多线程编程，经常会出现在执行某个操作时整个界面卡死，无法再做其他操作，而采用多线程编程能很好的解决这个问题，但随之而来的又有线程间控件的操作问题(.NET不允许在创建某控件之外其他线程中操作控件)，下边我们用一个例子说明怎么使用BackgroundWorker解决这一系列的问题：
复制内容到剪贴板 程序代码//using System.ComponentModel;
private void Form1_Load(object sender, EventArgs e)
{
using (BackgroundWorker bgWorker = new BackgroundWorker())
{
int i = 0;
//将会引起界面卡死的操作放在单独线程中执行
bgWorker.DoWork += delegate(object sender1, DoWorkEventArgs e1)
{
foreach (string item in Directory.GetFiles(@"E:\www", "*.*", SearchOption.AllDirectories))
{
File.AppendAllText(@"E:\list.txt", item + "\r\n");
i++;
}
};
//在 RunWorkerCompleted 中操作线程间控件,这是允许的
bgWorker.RunWorkerCompleted += delegate(object sender1, RunWorkerCompletedEventArgs e1)
{
textBox1.Text = string.Format("统计完成,总共{0}个文件.", i);
};
//开始执行
bgWorker.RunWorkerAsync();
}
}

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.000 ms

返回

标题: 使用 BackgroundWorker 进行多线程编程

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.000 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 2.047 ms

返回