Wieder entschuldige ich mich für eine Frage, die für Sie alle einfach sein könnte. Ich habe ein begrenztes Verständnis dafür, was in Silverlight hinter den Kulissen passiert.DispatcherTimer und UI aktualisieren Grenzen in C# silverlight
Ich habe eine Diagramm-App (Visiblox), die ich als Rolling Scope alle 20ms aktualisiert, einen Punkt hinzufügen und entfernen. In Pseudocode:
List<Point> datapoints= new List<Point>();
Series series = new Series(datapoints);
void timer_tick(){
datapoints.Add(new Point);
datapoints.RemoveAt(0);
// no need to refresh chart, it does refresh automatically
}
Wenn 6-Serie in diesem Charting-Tool ausgeführt wurde, begann es ein wenig träge zu zeigen. Das Ändern des Ticks auf 10ms machte keinen Unterschied, das Diagramm wurde mit der gleichen Geschwindigkeit aktualisiert, so dass es scheint, dass 20ms das Tempolimit ist (UI oder Diagramm?).
Ich versuchte mit CompositionTarget.Rendering
und bekam die gleichen Ergebnisse: unter 20ms gab es keinen Unterschied in der Geschwindigkeit.
Dann habe ich versehentlich beide aktiviert und Geschwindigkeit verdoppelt. Also habe ich mit mehreren Threads (2, 3, 4) getestet und die Geschwindigkeit verdoppelt, verdreifacht und vervierfacht. Dies hat noch keine Sperren, da ich nicht einmal weiß, welchen Prozess ich brauche, um eine Sperre zu generieren, aber keine Daten beschädigt oder Speicherlecks.
Die Frage, die ich habe, ist, warum ein träges Diagramm bei 20ms nicht bei 10ms laufen kann, aber lächerlich schnell ist, wenn Multithread? Wird der Aktualisierungsvorgang der Benutzeroberfläche schneller ausgeführt? Wird die Diagrammberechnung verdoppelt? Oder gibt es eine Grenze für die Geschwindigkeit, mit der ein einzelner DispatcherTimer ausgeführt werden kann?
Danke!
Edit: I einen Hintergrund der eingebetteten Codierung aufweisen, so dass, wenn I der Threads und Timings denke, ich glaube, sofort einen Stift in der Hardware von Makeln und Haken einen Umfang von bis zu Prozesslängen zu messen. Ich bin neu in Threads in C# und es gibt keine Pins, um Scopes zu verbinden. Gibt es eine Möglichkeit, Thread-Timings grafisch zu sehen?
Sie haben Recht. Es ist eine Illusion. Bei langsamen Geschwindigkeiten ist das "Rollen" des Charts leichter mit den Augen zu verfolgen und die Schwergängigkeit ist leicht zu erkennen, aber wenn man mehr als einen Punkt nach dem anderen aktualisiert, ist die Trägheit schwer zu erkennen. Vielen Dank! – PaulG