Я работаю над программой, которая читает из последовательного порта, затем анализирует, форматирует и отображает информацию соответствующим образом. Однако эта программа должна запускаться более 12 часов - постоянно обрабатывать поток входящих данных. Я нахожу, что, когда я позволяю моему приложению работать некоторое время, использование памяти увеличивается с линейной скоростью - не очень полезно для 12-часового использования.Чтение из SerialPort & Управление памятью - C#
Я внедрил регистратор, который записывает необработанные входящие двоичные данные в файл - есть ли способ использовать эту идею, чтобы очистить кеш памяти через равные промежутки времени? То есть как я могу, так часто, записывать в файл журнала таким образом, что данные не нужно хранить в памяти?
Также есть ли другие аспекты приложения Windows Form, которые будут способствовать этому? Например. Я печатаю форматированные строки в текстовое поле, которое заканчивается отображением всей строки. Поскольку он работает так долго, он легко отображает сотни тысяч строк текста. Должен ли я писать это в файл и очищать текст? Или что-то другое?
Спасибо большое! Фактический объект String имеет максимально 17 символов. Каждый раз, когда строка добавляется к дисплею, nulled (string = "";), устанавливается в новое значение и добавляется. Затем промыть и повторить. Так что фактическая строка не становится слишком большой, но отображение в текстовом поле связано с тем, что строка постоянно добавляется к текущему экрану. Это что-то меняет? – Slim
Нет. Как часто обновляется строка? (Как долго появляется текстовое поле?) – SLaks
Устройство - скорость передачи 9600 бод, постоянно отправляющая информацию.Я использую поток _dataReceived() для обработки входящих данных - я не уверен, насколько скоро вы узнаете, что это такое, давайте просто скажем, что это много и быстро. В течение нескольких минут я показываю ~ 25 тыс. Строк (каждый из 17 символов). Я сделал быстрый тест, где каждые 50 итераций (добавления строки 17char к дисплею) я очищаю дисплей. Это показало TREMENDOUS улучшения. В настоящее время он работает в течение 17 минут и едва увеличивает использование памяти в соответствии с taskmgr. Я думаю, проблема решена .. спасибо тонну. – Slim