-

- 加为好友
- 发送私信
- 在线聊天
|
| 发表于:2008-08-19 11:41:17 楼主 |
如何在BackgroundWorker Dowork进行并行数据处理 - C# code
worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
//////////////////////////////////////////////////
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
if (worker.CancellationPending) return;
foreach (XmlFormat xf in xmlList)
{
if (worker.CancellationPending) return;
switch (xf.method.ToLower())
{
case "upload": upload(xf); break;
case "download": download(xf); break;
default: return;
}
}
}
//////////////////
也就是说,我要在foreach里面,并行处理各个xf,不必等每个xf结束才处理才一个问题,因为怕其中一个任务处理不了,全部挂住了 所以必须采用并行处理,而不是串行处理. 在每个foreach里面新增一个新线程是可以实现并行的,但是对于BackgroundWorker的事件报告会产生紊乱.所以不知道怎么用?麻烦各位高手献计献策,如果有什么疑问,可以写在回复上 或者是不是可以通过重载OnDoWork方法,如果可以,又要怎么写呢?谢谢大家 |
|
|
|
100
修改
删除
举报
引用
回复
| |