Как ограничить очередь от переполнения

173
05 октября 2018, 21:40

Подскажите как правильно организовать защиту от переполнения очереди, суть в том чтобы очередь не кушала всю память при работе метода. Вот метод, в котором я прочитав блоки данных из файла добавляю их в очередь. Read_Blockk(fs) это метод, который разбивает файл на куски и читает их. Идея такая, как бы сделать так, чтобы в этом методе проверялась полнота очереди и если очередь полная то метод бы замирал, или поток в котором метод работает замирал до тех пор, пока очередь не станет свободной или в очереди не появится свободное место.Замысел такой, чтобы очередь не росла в размерах и не использовала всю память. Может есть эффективнее механизмы.

// создаем очередь c блоками данных
Queue<KeyValuePair<int, byte[]>> queue_block = new Queue<KeyValuePair<int, byte[]>>(); 
// добавляем в очередь считанные блоки  
public static void ADD_Block_to_Queue(Queue<KeyValuePair<int,byte[]>> queue_block,Stream fs)
{
    foreach (KeyValuePair<int, byte[]> block in Read_Blockk(fs))
    {
        queue_block.Enqueue(block);
    }
}
READ ALSO
Где используются деревья выражений

Где используются деревья выражений

Наткнулся на довольно интересную и сложную тему под названием "Деревья выражений"Изучил несколько примеров по этой теме - у меня возник вопрос:...

161
Конвертировать MS-DOS time format

Конвертировать MS-DOS time format

Нужно конвертировать байты MS-DOS time полученные с устройства 17 86 FF 4C в обычный читаемый форматПробовал таблицу http://www

202
Применение модификаторов virtual/override

Применение модификаторов virtual/override

Приведите, пожалуйста, хотя бы один реальный пример использования модификаторов virtual/override, где модификаторы virtual/ovveride оказываются действительно...

141