Подход к регистрации данных в реальном времени? - PullRequest
2 голосов
/ 11 ноября 2011

Я работаю над приложением регистрации трассировки в реальном времени в wpf. Я читаю зарегистрированные данные с порта UDP и конвертирую их в терминах моего модального класса. Я беспокоюсь, подумайте, не оставляет ли пользователь приложение открытымв течение длительного периода времени приложение будет использовать большой объем памяти. Я отображаю информацию журнала в прокручиваемом списке, поэтому у пользователя есть возможность прокручивать и переходить к предыдущему журналу. Я ищуподход к проектированию, чтобы я мог достичь наилучших результатов при оптимальном использовании памяти.

Ответы [ 3 ]

1 голос
/ 11 ноября 2011

«Реальное время» означает, что как только данные станут доступны, приложение должно забрать их и отобразить.Другого пути нет.

  • Можно рассмотреть что-то вроде очистки уже просмотренной информации журналирования, если это целесообразно с точки зрения пользователя, и загружать исторические данные по запросу.
  • Также одним из возможных решений является оптимизацияLogInformation модель данных, поэтому отображаемым объектам потребуется меньше памяти, это может быть значительным улучшением, учитывая, что отображается много записей, и каждый сохраненный байт может привести к мегабайту сохраненной памяти, поэтому, пожалуйста, поделитесь некоторым кодом объектов, которыйсвязаны с пользовательским интерфейсом и указывают, какие поля / свойства действительно должны отображаться для конечного пользователя
  • Для некоторых типов данных вы можете реализовать Ленивая загрузка и запрашивать данные из БД / файловой системы по запросу,Например, когда пользователь открывает форму «Подробности» для определенной записи LogInfo в списке пользовательского интерфейса, вы запрашиваете расширенную информацию, такую ​​как полное описание и т. Д., Поэтому вам не нужно хранить ее всегда в памяти, в то время как пользователь не запрашивает ее, открывая «ПодробнееПодробности "форма
  • Если вызовы БД являются дорогостоящими для вашей заявки, вы можете хранить некоторую информацию о файловой системе в сериализованном формате и загружать ее по требованию в режиме отложенной загрузки.

ДействительноТрудно предложить что-то конкретное без знания вариантов использования и стандартных рабочих процессов.Поэтому, пожалуйста, предоставьте более подробную информацию о том, как пользователь использует это приложение, чтобы появилось больше идей.

0 голосов
/ 11 ноября 2011

Похоже, у вас есть две большие данные для отображения. Вы можете использовать UI Virtualization. VirtualizingStackPanel может делать то, что вы хотите, не создавая элементы пользовательского интерфейса для всех ваших строк журнала, пока пользователь не перейдет к нему. Пример будет слишком длинным для stackoverflow. В сети множество примеров.

http://bea.stollnitz.com/blog/?p=338

С другой стороны, если у вас слишком большие требования к памяти только потому, что в журнале слишком много данных. Попробуйте записать его в базу данных на диске.

0 голосов
/ 11 ноября 2011

Одна из идей, которая может сработать, - добавить «слушателя», который будет видеть, была ли изменена программа, или, скажем, после 5 минут простоя, всплывающее окно спросит, хотите ли вы продолжить. Затем он снова подключится, когда пользователь нажмет «ОК»

.

Будет ли это работать? Я предполагаю, что использование памяти находится на сервере журналов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...