So aktualisieren Sie die Arbeitsfläche

9

Ich versuche eine visuelle Darstellung von jedem Sortieralgorithmus zu erstellen, wo die Daten in einem int [] Array dargestellt werden. Ein Beispiel für bubble sort on wikipedia:

Meine Sortieralgorithmen lösen alle ein Event ItemsSwapped aus, wenn zwei Elemente im Array int [] getauscht werden. Ich versuche, die Daten nach jedem Ereignis auf Leinwand anzuzeigen, das ist mein Code:

%Vor%

Das Problem ist, dass die Zeichenfläche sich nicht selbst aktualisiert, sondern nur nach einiger Zeit die endgültige Lösung anzeigt. Wie kann ich es nach jedem erhöhten Ereignis aktualisieren?

Bearbeiten - Ich habe versucht, mit UpdateLayout, InvalidateMeasure und Dispatcher-Objekt, aber keiner der beiden funktioniert.

    
sventevit 24.03.2013, 20:29
quelle

2 Antworten

2

Vielleicht starten Sie Ihren Sortieralgorithmus im UI-Thread, sodass er erst aktualisiert wird, wenn Sie fertig sind. Versuchen Sie, in einem anderen Thread zu sortieren, und aktualisieren Sie die Canvas-Kinder mit dem Dispatcher . durch Aufruf von Invoke oder BeginInvoke .

Wenn Ihr ItemsSwapped -Handler von einem separaten Thread aufgerufen wird, sieht er möglicherweise so aus:

%Vor%     
Vladimir 24.03.2013, 20:44
quelle
2

Verwenden Sie Threads? Sie müssen Ihre Arbeit in einem separaten Thread von der Hauptbenutzeroberfläche ausführen. Hier finden Sie einen Link, mit dem Sie loslegen können: Wie Sie aktualisieren können die GUI von einem anderen Thread in C #?

    
Dima 24.03.2013 20:45
quelle

Tags und Links