|
You last visited: Today at 21:52
Advertisement
UI Controls aktualisieren
Discussion on UI Controls aktualisieren within the .NET Languages forum part of the Coders Den category.
05/02/2015, 09:39
|
#1
|
elite*gold: 0
Join Date: Sep 2013
Posts: 30
Received Thanks: 5
|
UI Controls aktualisieren
Heyho!
Wollte mal gerne von euch wissen, was die beste Lösung ist um UI Controls(genauer gesagt Labels), in einem Interval
von ca. 200-300 Millisekunden zu aktualisieren, ohne das die Performance bzw. die Stabilität der Anwendung darunter leidet?
Momentan aktualisiere ich meine Labels ganz normal aus einem Thread heraus mittels Invoke-Funktion. Falls das was zur Sache
tut: Die Labels dienen als Counter und behinhalten demach nur Zahlen!
Grüße, exception
|
|
|
05/02/2015, 12:38
|
#2
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Ich nehme mal an du nutzt das WinForms Framework. Das Problem ist, dass du, wenn du in einem 200 - 300 ms Interval die Label aktualisierst, zu viel Rechenleistung verschwendest. Ich persönlich würde dir entweder zu einem Framework mit Support für Datenbinding raten (z.B. WPF) oder alternativ Properties zu definieren die das Label jedes mal aktualisieren, wenn du den Wert änderst. Das geht natürlich hier nur bis zu einem gewissen Grad weil das WinForms Framework darauf einfach nicht ausgelegt ist.
Code:
private int _Value;
public int Value
{
get { return _Value; }
set
{
_Value = value;
LabelValue.Text = value.ToString();
}
}
wäre einer der wenigen Möglichkeiten, die du hier hast. Sollte das nicht gehen weil der Datentyp beispielsweise nur ein Objekt ist, dessen Felder du ändern willst musst du wohl zu einem Timer greifen.
|
|
|
05/02/2015, 12:58
|
#3
|
elite*gold: 4
Join Date: Feb 2008
Posts: 3,854
Received Thanks: 1,268
|
Die Alternative wäre, mittels Events, bei einer Veränderung, zu arbeiten. Damit bist du weniger an den setter gebunden. ;-) Siehe z.B. auch  .
|
|
|
05/02/2015, 13:46
|
#4
|
elite*gold: 0
Join Date: Sep 2013
Posts: 30
Received Thanks: 5
|
Hey,
erstmal Danke an euch beiden für die Antwort!
Korregiert mich bitte wenn ich falsch liege aber kommt das nicht genau aufs selbe wenn ich eine Methode oder ein Event dafür verwende? Im Endeffekt wird das Label auf der Form bei Veränderung des Counter Integers ebenso sofort aktualisiert und genau dieser Prozess erzeugt die CPU Belastung, oder?
Im Moment verwende ich ja einen Extra Thread der in einer Loop mit jeweils 1 Sekunde Delay alle Labels refresht. Natürlich könnte ich das Delay auf 5 Sekunden oder was auch immer raufsetzen um an Leistung einzusparen aber damit bin ich nicht wirklich zufrieden.
Wie schauts denn im Bezug auf Controls aus? Gibts da vielleicht irgendwas anderes was sicher besser als ein Label eignet?
|
|
|
05/02/2015, 14:20
|
#5
|
elite*gold: 4
Join Date: Feb 2008
Posts: 3,854
Received Thanks: 1,268
|
Der wesentliche unterschied zu Mosteys Lösung ist diese, dass meine mittels Event agiert (dynamisch) und die andere eben fest deklarierte ist. So kannst Du eben DANN das Control-Element aktualisieren, wenn tatsächlich ein neuer Wert zugewiesen wurde und nicht jedes mal, wenn kein neuer existiert.
Probier es aus, was es bringt! ;-)
|
|
|
05/03/2015, 10:00
|
#6
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by exception1337
Korregiert mich bitte wenn ich falsch liege aber kommt das nicht genau aufs selbe wenn ich eine Methode oder ein Event dafür verwende? Im Endeffekt wird das Label auf der Form bei Veränderung des Counter Integers ebenso sofort aktualisiert und genau dieser Prozess erzeugt die CPU Belastung, oder?
|
Nein.
Es ist ein großer Unterschied ob du im 200 MS Takt den Wert des Labels überschreibst, obwohl eigentlich gar keine Änderung notwendig gewesen wäre. Und dass du dann noch die Aktion an einen anderen Dispatcher weitergeben musst, macht es letztendlich noch langsamer.
Wenn du allerdings nur dann den Wert aktualisierst, wenn dieser sich tatsächlich auch geändert hat, entsteht um einiges weniger Aufwand für die CPU.
Quote:
Originally Posted by exception1337
Wie schauts denn im Bezug auf Controls aus? Gibts da vielleicht irgendwas anderes was sicher besser als ein Label eignet?
|
Die Controls beeinflussen das nicht. Du brauchst eine Möglichkeit, eine Eigenschaft bzw. Feld aus deinem Code an eine Eigenschaft eines Controls zu binden. Ich kenne da nur die native Lösung mittels WPF, die solltest du dir zu Herzen nehmen wenn dir das wirklich wichtig ist:
|
|
|
05/11/2015, 10:22
|
#7
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Auch WinForms können in gewissem Maße DataBinding.
|
|
|
 |
Similar Threads
|
Question on Controls
06/10/2014 - Trading - 0 Replies
I would like to know if anyone knows how to make it so i can move my view angles with the arrows instead of the mouse?
|
controls
05/24/2012 - DarkOrbit - 2 Replies
I could make a discussion about when I say we are the controls?
|
Controls ( i need help plss)
09/09/2011 - Grand Chase Philippines - 3 Replies
Good day sir. i'm having a problem saving my controls..
kinopy ko lang po kasi gc files sa friend ko at iba yung conrtols nea, everytime na maglolog in ako iba yung conrtols at everytime na isasave ko kinabukasan pag mag lolog in ulet ako, wala nanaman.. kaya lage ako natatalo sa bwena mano sa pvp kase nakakalimutan ko... i need some answer.. thanks sa mga sasagot ..
|
Controls
07/31/2011 - AutoIt - 5 Replies
Else
|
Set your controls like a pro
02/01/2009 - CO2 Guides & Templates - 10 Replies
Heres a quick way to set controls or "hotkeys" in an efficient and durable way.
Im gona explain how i set my controls but feel free to make changes for your confort.
I set my hotkeys with the CTRL key because you always have to press it anyways.
Ctrl+W inventory -you always want to look in your bag
Ctrl+D clear -so much talkshit in co
Ctrl+S sit -power over 9000
Ctrl+A shift screen -this may seem stupid to some but...
|
All times are GMT +1. The time now is 21:52.
|
|