Try replacing:
Parallel.ForEach(flist, (item) =>
{
string f1 = item.Split('|')[0];
string f2 = item.Split('|')[1];
a = File.ReadAllText(f1);
b = File.ReadAllText(f2);
Consume(a, b);
});
With:
Parallel.ForEach(flist,
new ParallelOptions { MaxDegreeOfParallelism = 4 },
(item) =>
{
string f1 = item.Split('|')[0];
string f2 = item.Split('|')[1];
a = File.ReadAllText(f1);
b = File.ReadAllText(f2);
Consume(a, b);
});
This will prevent too many threads being created. Then you can always experiment with higher numbers and see if performance improves.