public override void ExecuteQuery(ITransaction transaction, ClassMapping mapping, IDaQuery query, DataReaderDelegate invokeMe, Hashtable parameters)
{
// Make a copy of the table and iterate over that, that way reading doesn't block writing (or
// more reading).
IDictionary<string, MemoryObject> tempTable;
IDictionary<string, MemoryObject> table = GetTable(mapping);
lock (table)
{
tempTable = new CheckedDictionary<string, MemoryObject>(table);
}
MemoryDataReader reader = new MemoryDataReader(this, mapping, ((UnqueryableQuery)query).Criteria,
tempTable.Values.GetEnumerator());
try
{
invokeMe.Invoke(parameters, reader);
}
finally
{
reader.Close();
}
}