Diseñe el registro de eventos interactivos de usuario eficiente para que no exceda mi límite de objetos de usuario de 10000.

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

  •  22-10-2019
  •  | 
  •  

Pregunta

Tengo un problema: en mi aplicación obtengo información relacionada con el evento, por lo que para el evento X debería obtener una ventana de formulario en la que hago algún tipo de cosas (ingrese algún texto y haga clic en un botón)

Mi problema es que para mi aplicación hay un límite de 10,000 objetos de usuario (como para todas las aplicaciones C#), y para mi código existente ya hay 3000 objetos de usuario ocupados (por lo que eso deja alrededor de 7000 objetos de usuario gratis). Recibo de la información de 200 clientes sobre eventos sobre algunas cosas en cada uno de los clientes.

Cuando recibo información sobre un evento de un cliente, me gustaría mostrar esto de alguna manera como una etiqueta en una ventana de registro de eventos y cuando hago clic en la etiqueta de la ventana de formulario específica (que mencioné anteriormente) para que pueda aparecer para que pueda Ingrese un texto y haga clic en un botón.

Necesito poder mostrar esta ventana de registro de eventos de manera eficiente (porque podría recibir hasta 1000 eventos de cada cliente y si cada etiqueta en este registro ocupa 1 objeto que significa que para cada cliente habrá 1000 objetos (máximo, pero posible ) Entonces excedería mucho mi límite de 10000).

¿Cómo puedo hacer algo al respecto de manera eficiente?

Actualmente, para cada evento, inicio una ventana de formulario en la que ingreso texto y haga clic en un botón, pero esto no es eficiente (porque mi ventana de formulario ocupa ya 3 objetos de usuario y si tengo un objeto de usuario máximo de 3 * 200 * 1000 que excedo mi límite de 7000 con mucho).

¿Fue útil?

Solución

Me cuesta ver cómo puedes obtener miles de ventanas de una interfaz de usuario como esta. Si creas una Control de etiqueta para cada notificación individual Entonces, sí, esto puede quedarse fuera de control a toda prisa. Lo hace terriblemente lento también.

No use controles de etiquetas, use un cuadro de lista, ListView, TreeView o DataGridView. Controles que pueden mostrar múltiples elementos pero solo consumen una sola manija de la ventana.

Otros consejos

Como dijo Hans Passant: Win32 no está diseñado para usarse en la forma en que está tratando de usarlo.

Una implementación típica podría verse así:

alt text

Si hay muchos elementos (unos pocos miles, como espera), un cuadro de búsqueda rápido para filtrar los elementos en la lista es casi obligatorio.

Si los detalles son complejos, puede reemplazar el control del navegador web estático con HTML generado en la marcha.


Si insiste en botones por evento (que no recomendaría para su UX) necesitaría renderizarlo usted mismo, que es una pita en GDI. O use un control de navegador web

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top