目前想用backgroundworker控件实现多线程的处理,有些问题请教一下各位高手:
1.创建多个线程,需要多个backgroundworker控件吗,还是只需一个backgroundworker控件即可?
2.由于我最后还要把多线程处理得到的结果显示在一个第三方控件上,请问怎么把多线程处理得到的结果显示到第三方控件上?
3.在用backgroundworker控件的时候,直接在dowork事件里执行我需要执行的函数,那怎么能让我各个线程的结果最后同步的显示到第三方控件上(因为每一块处理的数据量不等,我的意思是怎么让先完成的线程去等着最后完成的线程,然后一齐把得到的结果显示出来)。
请各位高手指点。
1.创建多个线程,需要多个backgroundworker控件吗,还是只需一个backgroundworker控件即可?
2.由于我最后还要把多线程处理得到的结果显示在一个第三方控件上,请问怎么把多线程处理得到的结果显示到第三方控件上?
3.在用backgroundworker控件的时候,直接在dowork事件里执行我需要执行的函数,那怎么能让我各个线程的结果最后同步的显示到第三方控件上(因为每一块处理的数据量不等,我的意思是怎么让先完成的线程去等着最后完成的线程,然后一齐把得到的结果显示出来)。
请各位高手指点。
另外,可以在foreach循环中试一下实例化新的BackgroundWorker来执行方法,不过需要注意的是在该处实例化的BackgourndWorker对象线程上下文是在worker_DoWork方法的上下文,不同于UI线程,因此需要调用 Control.BeginInvoke或Control.Invoke方法。
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
worker.WorkerReportsProgress = true;
worker.RunWorkerAsync();
static void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{}
static void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
}
static void worker_DoWork(object sender, DoWorkEventArgs e)
{}