public ThreadSafeQueue(bool useIndexes = false) { isIndexed = useIndexes; isFinished = false; //выставляем ограничение на размер очереди исходя из разрядности, //максимальному стеку приложения в win32 для x86, ограничениям на размер объектов памяти у CLI для всех, //и количества физ.памяти на данный момент, которую можно использовать //(на скорость работы это никак не влияет, т.к. если где-то растёт очередь, то скорее всего //где-то не справляется один маленький writer //некоторая страховка от возможного Exception Out of Memory, особенно на x86 blocksLimit = EnvironParameters.GetQueueBlocksLimit(); }
//метод формирует титульную часть отчёта для пользователя и запись в лог файл private void GenerateReportsTitle() { long fileLen = new System.IO.FileInfo(workParams.srcFile).Length; string message = String.Format("{0} ({1} байт) -> {2}, метод {3} ({4})", workParams.srcFile, fileLen, workParams.dscFile, workParams.coderEngine.coderName, Enum.GetName(typeof(eCoderMethod), workParams.coderEngine.coderMethod).ToLower()); Console.WriteLine(message); Logger.WriteLog(String.Format("\n\nДата: {0}, время: {1}\n{2}", DateTime.Now.ToShortDateString(), DateTime.Now.ToShortTimeString(), message)); message = String.Format("Кол-во потоков архиватора {0}, разрядность среды {1}", EnvironParameters.threadsCount, EnvironParameters.bitDepth); Console.WriteLine(message); Logger.WriteLog("\n" + message); Logger.WriteLog("\nОбъём свободной физической памяти: " + EnvironParameters.memStatus.ullAvailPhys + " байт"); Logger.WriteLog("\nОграничение на размер очереди: " + EnvironParameters.GetQueueBlocksLimit() + " элементов"); }