private bool ProcessFilters(CommandBase command)
{
IFilter[] localFilters = null;
while (true)
{
lock (holdChanges)
{
localFilters = Filters.OrderBy(f => f.Order).ToArray();
_filtersChanged = false;
}
if (!localFilters.Any()) return true;
int index = 0;
while (index < localFilters.Count() && !_filtersChanged)
{
bool result = localFilters[index++].Process(command);
if (!result) return false;
}
if (!_filtersChanged) return true;
}
}