所以,我将阅读用户信息的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.如果是,则等待该线程完成然后启动该线程.
但有没有更好的方法呢?
Parallel.ForEach(lines.GroupBy(line => line.TheUser), grp => { // processing user grp.Key foreach(var line in grp) { // do the stuff here } });