public void WriteResults(Action<byte[]> writer)
{
if (m_files.Count == 0)
{
foreach (var val in m_sortedObjects.Values)
{
writer(val);
}
return;
}
var items = new List<InputItem>();
items.Add(new MemoryInputItem(m_sortedObjects));
foreach (var path in m_files)
{
items.Add(new FileInputItem() {Reader = new BinaryReader(File.Open(path, FileMode.Open))});
}
foreach (var item in items)
{
item.Advance();
}
while (items.Count > 0)
{
int imin = 0;
string keyMin = items[0].Key;
for (int i = 1; i <items.Count; i++)
{
if (items[i].Key.CompareTo(keyMin) < 0)
{
imin = i;
keyMin = items[i].Key;
}
}
writer(items[imin].Value);
items[imin].Advance();
if (items[imin].Finished)
items.RemoveAt(imin);
}
foreach (var path in m_files)
File.Delete(path);
}