Проектируйте эффективный пользовательский интерактивный журнал событий, чтобы я не превышал свой предел объекта пользователя 10000.

StackOverflow https://stackoverflow.com/questions/4770130

  •  22-10-2019
  •  | 
  •  

Вопрос

У меня есть проблема: в моем приложении я получаю некоторую информацию, связанную с событиями, поэтому для события X я должен получить окно формы, в котором я делаю что-то вроде вещей (введите немного текста и нажимаю на кнопку)

Моя проблема заключается в том, что для моего приложения существует предел 10 000 пользовательских объектов (как и для всех приложений C#), и для моего существующего кода уже за занято 3000 пользовательских объектов (так что оставляет около 7000 пользовательских объектов бесплатными). Я получаю от 200 клиентов информации о событиях, касающихся некоторых вещей, происходящих на каждом из клиентов.

Когда я получаю информацию о событии от клиента, я хотел бы каким-то образом отобразить это как метку в окне журнала событий, и когда я нажимаю на метку, окно конкретного формы (которое я упоминал ранее), чтобы я мог, чтобы я мог Введите текст и нажмите кнопку.

Мне нужно эффективно отображать окно этого журнала событий (потому что я мог бы получить до 1000 событий от каждого клиента, и если каждая метка в этом журнале занимает 1 объект, это означает, что для каждого клиента будет 1000 объектов (максимум, но возможно ), поэтому я бы превысил очень много своего предела 10000).

Как я могу что -то с этим сделать эффективно?

В настоящее время для каждого события я запускаю окно формы, в которое я ввожу текст и нажимаю кнопку, но это не эффективно (потому что в окне моей формы уже 3 пользовательских объекта, и если у меня есть клиенты Max 3 * 200 * 1000 пользовательский объект, я превышаю мой 7000 лимит на сегодняшний день).

Это было полезно?

Решение

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

Не используйте элементы управления меткой, используйте ListBox, ListView, TreeView или DataGridView. Элементы управления, которые могут отображать несколько элементов, но потребляют только одну ручку окна.

Другие советы

Как сказал Ханс Пассант - Win32 не предназначен для использования в том, как вы пытаетесь его использовать.

Типичная реализация может выглядеть так:

alt text

Если есть много элементов (несколько тысяч, как вы ожидаете), быстрое поле для поиска для фильтрации элементов в списке почти обязательно.

Если детали являются сложными, вы можете заменить статический веб -браузер на HTML, сгенерированный на лету.


Если вы настаиваете на кнопках на событие (которые я бы не рекомендовал для вашего UX), вам нужно будет отображать его самостоятельно, что является PITA в GDI. Или используйте управление веб -браузером

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top