Подскажите как правильно организовать защиту от переполнения очереди, суть в том чтобы очередь не кушала всю память при работе метода. Вот метод, в котором я прочитав блоки данных из файла добавляю их в очередь.
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);
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Наткнулся на довольно интересную и сложную тему под названием "Деревья выражений"Изучил несколько примеров по этой теме - у меня возник вопрос:...
Нужно конвертировать байты MS-DOS time полученные с устройства 17 86 FF 4C в обычный читаемый форматПробовал таблицу http://www
Приведите, пожалуйста, хотя бы один реальный пример использования модификаторов virtual/override, где модификаторы virtual/ovveride оказываются действительно...