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.
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:
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 #?