Разработайте эффективный пользовательский интерактивный журнал событий, чтобы я не превысил ограничение в 10000 пользовательских объектов. - PullRequest
0 голосов
/ 22 января 2011

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

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 22 января 2011

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

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

2 голосов
/ 22 января 2011

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

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

alt text

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

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


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

...