Entwerfen Sie ein effizientes interaktives Ereignisprotokoll, damit ich mein 10000 -Benutzerobjektlimit nicht überschreite.

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

  •  22-10-2019
  •  | 
  •  

Frage

Ich habe ein Problem: In meiner Anwendung erhalte ich einige ereignisbezogene Informationen. Für Ereignis X sollte ich also ein Formular Fenster erhalten, in dem ich irgendeine Art von Dingen mache (geben Sie einen Text ein und klicken Sie auf eine Schaltfläche).

Mein Problem ist, dass für meine Anwendung ein Grenzwert für Benutzerobjekte von 10.000 Benutzer vorliegt (wie für alle C# -Apps), und für meinen vorhandenen Code sind bereits 3000 Benutzerobjekte besetzt (so dass rund 7000 Benutzerobjekte frei bleiben). Ich erhalte von 200 Kunden Informationen zu Veranstaltungen über einige Dinge, die auf jeden der Kunden gehen.

Wenn ich Informationen zu einem Ereignis von einem Kunden erhalte, möchte ich dies irgendwie als Etikett in einem Ereignisprotokollfenster anzeigen und wenn ich auf das Beschriftung des spezifischen Formulars (das ich zuvor erwähnt habe) klicke Geben Sie einen Text ein und klicken Sie auf eine Schaltfläche.

Ich muss in der Lage sein, dieses Ereignisprotokollfenster effizient anzuzeigen (da ich bis zu 1000 Ereignisse von jedem Kunden erhalten könnte und wenn jedes Etikett in diesem Protokoll 1 Objekt einnimmt ) also würde ich meine 10000 -Grenze sehr überschreiten).

Wie kann ich etwas dagegen effizient tun?

Derzeit starte ich für jedes Ereignis ein Formularfenster, in dem ich Text eingreife und auf eine Schaltfläche klicke, dies ist jedoch nicht effizient (da mein Formular bereits 3 Benutzerobjekte einnimmt und wenn ich ein max. 3 * 200 Clients * 1000 Benutzerobjekt habe, überschrieb ich meine 7000 Grenze bei weitem).

War es hilfreich?

Lösung

Ich habe Schwierigkeiten zu sehen, wie Sie Tausende von Fenstern von einer Benutzeroberfläche wie dieser erhalten können. Wenn Sie erstellen eines Etikettenkontrolle für jede einzelne Benachrichtigung dann kann dies in Eile schlecht außer Kontrolle geraten. Macht es auch schrecklich langsam.

Verwenden Sie keine Label -Steuerelemente, verwenden Sie ein Listbox, ListView, TreeView oder DataGridView. Steuerelemente, mit denen mehrere Elemente angezeigt werden können, aber nur einen einzelnen Fenstergriff verbrauchen.

Andere Tipps

Wie Hans Passant sagte - win32 wird nicht so konzipiert, dass Sie so verwendet werden, wie Sie es verwenden.

Eine typische Implementierung könnte so aussehen:

alt text

Wenn es viele Elemente gibt (wie Sie erwarten), ist ein Schnellsuchfeld zum Filtern der Elemente in der Liste fast obligatorisch.

Wenn die Details komplex sind, können Sie die statische Webbrowsersteuerung durch HTML ersetzen, die im laufenden Fliegen generiert werden.


Wenn Sie auf Tasten-per-Event bestehen (was ich für Ihre UX nicht empfehlen würde), müssen Sie es selbst rendern, was eine Pita in GDI ist. Oder verwenden Sie eine Webbrowsersteuerung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top