当前位置:  开发笔记 > 编程语言 > 正文

如何通过多线程完成这项工作?

如何解决《如何通过多线程完成这项工作?》经验,为你挑选了1个好方法。

所以,我将阅读用户信息的arraylist并用它做一些任务.

例如,

for(int i=0;i
        {
        Thread.CurrentThread.IsBackground = true;

        ...some task over here which would take 4-5 minutes

        }).Start();
}

arraylist数据将如下:

用户,信息,信息

user2,info,info

user3,info,info

用户,信息,信息

正如您在第4行中看到的那样,第一个用户再次重复.

现在我想要的是一些方法来检测是否已经为用户运行了一个线程.就像为用户运行2个线程(第1行和第4行).哪个不应该发生.

我想到的是为每个线程当前正在运行的用户创建一个arraylist,并在每次创建新线程时检查该arraylist.如果是,则等待该线程完成然后启动该线程.

但有没有更好的方法呢?



1> Marc Gravell..:
Parallel.ForEach(lines.GroupBy(line => line.TheUser), grp => {
    // processing user grp.Key
    foreach(var line in grp) {
        // do the stuff here
    }
});


@SidharthJain请告诉我你究竟反对什么?你问我如何将它们放到线程上,我解释说这就是`Parallel.ForEach`所做的.没有更多,没有更少.你不合适.如果你认为我以某种方式攻击你:那完全在你的想象中.
推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有