小凡seu 2016-04-18 09:57
浏览 1896

关于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();         
    }
  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 素材场景中光线烘焙后灯光失效
    • ¥15 请教一下各位,为什么我这个没有实现模拟点击
    • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
    • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
    • ¥20 有关区间dp的问题求解
    • ¥15 多电路系统共用电源的串扰问题
    • ¥15 slam rangenet++配置
    • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
    • ¥15 ubuntu子系统密码忘记
    • ¥15 保护模式-系统加载-段寄存器