backgroundworker-关于BackgroundWorker多线程同步问题

问题描述

关于BackgroundWorker多线程同步问题
定义了一组 List bgws = new List();其中每一个bgws[i]的DoWork事件做的工作都是一样的,但是有两个参数随每个bgws[i]不同而不同,所以就如下分别写了很多DoWork0、DoWork1.。。。之类的来进行同步处理,有没有更简洁的办法,可以同时调用进行使用?
private void btnCopy_Click(object sender EventArgs e)
{
for (int i = 0; i < srctable.Count; i++)
{
BackgroundWorker bgw = new BackgroundWorker();
bgws.Add(bgw);
bgws[i].WorkerReportsProgress = true;
bgws[i].WorkerSupportsCancellation = true;
//bgws[i].DoWork += new DoWorkEventHandler(DoWork);
//bgws[i].ProgressChanged += new ProgressChangedEventHandler(UpdateProgress);
//bgws[i].RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork);
}
string[] tName = new string[srctable.Count 2];
//List tName = new List();
for (int i = 0; i < srctable.Count; i++)
{
tName[i 0] = srctable[i];
tName[i 1] = destable[i];

        }        bgws[0].DoWork += new DoWorkEventHandler(DoWork0);        bgws[0].ProgressChanged += new ProgressChangedEventHandler(UpdateProgress0);        bgws[0].RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork0);        bgws[1].DoWork += new DoWorkEventHandler(DoWork1);        bgws[1].ProgressChanged += new ProgressChangedEventHandler(UpdateProgress1);        bgws[1].RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork1);        bgws[2].DoWork += new DoWorkEventHandler(DoWork2);        bgws[2].ProgressChanged += new ProgressChangedEventHandler(UpdateProgress2);        bgws[2].RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork2);        bgws[3].DoWork += new DoWorkEventHandler(DoWork3);        bgws[3].ProgressChanged += new ProgressChangedEventHandler(UpdateProgress3);        bgws[3].RunWorkerCompleted += new RunWorkerCompletedEventHandler(CompletedWork3);        bgws[0].RunWorkerAsync();        bgws[1].RunWorkerAsync();        bgws[2].RunWorkerAsync();        bgws[3].RunWorkerAsync();             }

解决方案

多线程同步问题
多线程同步问题
关于多线程同步问题

时间: 2024-08-22 05:07:44

backgroundworker-关于BackgroundWorker多线程同步问题的相关文章

Servlet及JSP中的多线程同步问题

js|servlet|多线程|问题 Servlet/JSP技术和ASP.PHP等相比,由于其多线程运行而具有很高的执行效率.由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的同步问题.然而,很多人编写Servlet/JSP程序时并没有注意到多线程同步的问题,这往往造成编写的程序在少量用户访问时没有任何问题,而在并发用户上升到一定值时,就会经常出现一些莫明其妙的问题,对于这类随机性的问题调试难度也很大. 一.在Servlet/JSP中的几种变量类型 在

Java多线程同步问题的探究(一、线程的先来后到)

众所周知,在Java多线程编程中,一个非常重要的方面就是线程的同步问题. 关于线程的同步,一般有以下解决方法: 1. 在需要同步的方法的方法签名中加入synchronized关键字. 2. 使用synchronized块对需要进行同步的代码段进行同步. 3. 使用JDK 5中提供的java.util.concurrent.lock包中的Lock对象. 另外,为了解决多个线程对同一变量进行访问时可能发生的安全性问题,我们不仅可以采用同步机制,更可以通过JDK 1.2中加入的 ThreadLocal

Java开发多线程同步技巧

在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题.在Java中内置了语言级的同步原语--synchronized,这也大大简化了Java中多线程同步的使用. 我们首先编写一个非常简单的多线程的程序,是模拟银行中的多个线程同时对同一个储蓄账户进行存款.取款操作的. 在程序中我们使用了一个简化版本的Account类,代表了一个银行账户的信息.在主程序中我们首先生成了1000个线程,然后启动它们,每一个线程都对John的账户进行存100元,然后马上又取出100元.这样,对

线程池-多线程同步数据且等多线程同时完成后再走主线程

问题描述 多线程同步数据且等多线程同时完成后再走主线程 用线程池管理,开10条线程去读取和更新几十万数据,但是主线程直接跑下去了,这个不能允许,但是线程池又不能用join来.自己建Thread join,这10条线程又是一条条运行,不合要求.应该如何做,谢谢 解决方案 子进程睡眠不同的时间,父进程wait但是忽略子进程死信号,这样父进程会是最后退出的

多线程同步方案同步选择

问题描述 多线程同步方案同步选择 在WIN32的C++多线程开发中的生产消费使用的同步方案中,一般会采用 条件变量,来做为等待判断的条件. 我在网狐的工作线程中看见了一种新的使用方法: 工作线程使用 GetQueuedCompletionStatus 等待事件触发. 生产线程使用 PostQueuedCompletionStatus 产生消息,另 GetQueuedCompletionStatus 触发执行. 我在网络中找资料,并没有关于多线程 同步使用 IOCP 完型端口的案例. 都是使用信号

java多线程同步问题,小弟百撕不得其解,特来求助!

问题描述 java多线程同步问题,小弟百撕不得其解,特来求助! 多线程共享同一资源,同一张票卖出了多张!同步方法,同步代码块都没用. 问题:编写三各类Ticket.SealWindow.TicketSealCenter分别代表票信息.售票窗口.售票中心.售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程. public class ThreadDemo { public static void main(String[] args) { Thread t1

多线程 同步 信号量-用信号量实现多线程同步(用 c# 语言实现) ?

问题描述 用信号量实现多线程同步(用 c# 语言实现) ? 现实信号量关键是 p v 操作,由于p v 操作是不可中断的,怎么模拟使得 p v 操作不可中断的执行呢? 解决方案 http://www.cnblogs.com/heqichang/archive/2011/12/24/2300301.html 解决方案二: http://blog.csdn.net/adream307/article/details/7566342

java-Java中多线程同步锁报无效指针异常是何原因,求大神解答!

问题描述 Java中多线程同步锁报无效指针异常是何原因,求大神解答! /* 需求: 使用lock接口实现商品的生产和销售的动态平衡 思路: 1.创建被共同操作的数据类Resource,并通过多态引用分别创建lock和condition子类对象以及资源的获取和赋值方法 2.创建两个相反操作即生产和销售的类同时实现Runnable接口,并覆盖run方法 3.在主函数中,创建资源对象,并作为共同参数分别传递给生产和销售两个线程实现类的构造函数 4.分别将生产和销售类的对象作为参数,传给两个线程,并各自

起底多线程同步锁(iOS)

iOS/MacOS为多线程.共享内存(变量)提供了多种的同步解决方案(即同步锁),对于这些方案的比较,大都讨论了锁的用法以及锁操作的开销,然后就开销表现排个序.小哥以为,最优方案的选用还是看应用场景,高频接口PK低频接口.有限冲突PK激烈竞争.代码片段耗时的长短,以上都是正确选用的重要依据,不同方案在其适用范围表现各有不同.这些方案当中,除了熟悉的iOS/MacOS系统自有的同步锁,另外还有两个自研的读写锁,还有应用开发中常见的set/get访问接口的原子操作属性. 1.@synchronize