不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
使用 BackgroundWorker 进行多线程编程
编辑:dnawo 日期:2009-05-04
在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();
}
}
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 | 引用: 0 | 查看次数: 4861
发表评论
请登录后再发表评论!