我有一个.csv文件,其中包含需要进行大量计算的数据。 棘手的是,每一行都有特定的数据组,其特征为" a"," b"," c" ....
例如:a,1,2,3,4-b,1,3,4,5-c,2,3,4,6 ......
我希望这个小组中的每个小组分别获得进程...所以1个线程用于" a" 1个线程用于" b"等等... 关于如何挑选数组或列出任务[1] - >的任何想法a,任务[2] - > b(匹配应基于线实际上具有值a,b,c ...如上所述的事实) 最后一项是每行可以有不同数量的数据组,例如
1st line --> {a},{b},{c}
2nd line --> {b},{d},{e}
10th line --> {a},{c},{e}
所以作业应该是动态的 谢谢你的帮助
答案 0 :(得分:1)
使用以下方法处理文件。
Dictionary<string, Task> tasks = new Dictionary<string, Task>();
Dictionary<string, Queue<IEnumerable<string>>> queues = new Dictionary<string, Queue<IEnumerable<string>>>();
foreach( var line in File.ReadAllLines("file.txt"))
{
var parts = line.Split('-');
foreach( var part in parts )
{
var keyValues = part.Split(',');
if( !tasks.ContainsKey( keyValues[0] ) )
{
var queue = new Queue<IEnumerable<string>>();
queues[keyValues[0]] = queue;
queue.Enqueue(keyValues.Skip(1));
var task = Task.Run(() => Process(queue));
tasks[keyValues[0]] = task;
}
else
{
queues[keyValues[0]].Enqueue(keyValues.Skip(1));
}
}
}