Guten Tag NGB,
ich bin momentan Informatik Student im dritten Semester und da ich mich in den Semesterferien langweile, wollte ich ein ewig altes Projekt von mir aus Java in C# portieren. Das ganze soll später einmal ein Programm werden, um diverse Sortieralgorithmen zu visualisieren, aber da ich erst vor ein paar Tangen angefangen habe und direkt auf die folgenden Probleme gestoßen bin, ist das natürlich nicht ansatzweise fertig.
Wie dem auch sei, seit gestern sind mir bereits Tonnen von Fragen in den Kopf gekommen, die ich nach einiger Recherche auch nicht selbst beantworten konnte. Ich hoffe jemand von Euch kann mir da weiterhelfen.
Zuerst einmal habe ich hier den Link zu einem GitRepo, damit Ihr Euch einen Gesamtüberblick verschaffen könnt: https://github.com/hurt-/SortVisualizer
Nun zu meinen Fragen:
1. In der Java Version konnte man über die deprecated Funktionen .suspend und .resume eines Threads einen Sortieralgorithmus pausieren und wiederaufnehmen. Da ich das Feature auch für die neue Version geplant habe, aber nicht auf die deprecated Funktionen zurückgreifen möchte, da überall davon abgeraten wird dies zu tun, hab ich jetzt so einige Schwierigkeiten. Bisher setze ich darauf, dies mit System.Threading.Thread zu lösen, wobei ein ManualResetEvent dazu verwendet werden soll, das Pausieren und Wiederaufnehmen zu gewährleisten.
Jetzt habe ich allerdings das Problem, dass ich die Zeit die ein Algorithmus zum sortieren braucht zurückgeben möchte. Ich hab bisher viel darüber gelesen, dass in .NET 4.5 paralleles Programmieren hauptsächlich mit Tasks implementiert wird und frage mich nun, wie ich meinen bisherigen Code so umbauen kann, dass ich 1. die "Elapsed" Zeit ordentlich returnen kann, sodass der Aufrufer mittels "await" auf den Wert warten kann. 2. Wie ich einen Task pausieren und wiederaufnehmen kann.
Ich habe hier eine Frage dazu auf StackOverflow gefunden, aber leider werde ich daraus überhaupt nicht schlau. Kann mir da jemand weiterhelfen?
2. Wie genau verhindere ich, dass mein "RepaintTicker" zum erneuten Aufruf des "DrawElement" des Fensters, das Fenster übergeben bekommen muss? Auch dazu finde ich hier eine Frage auf StackOverflow, werde daraus aber auch nicht recht schlau, da die erste Antwort bereits 6 verschiedene Ansätze liefert und ich nicht weiß, welchen genau ich davon nun auf mein Szenario übertragen muss.
3. Wie extende ich das UserControl "Canvas" von WPF um die Methoden "DrawElements" und "DrawText" in das Canvas auszulagern? Meiner Meinung nach, würde das dort besser hinpassen als im aktuellen MainWindow.
Zu der Frage hab ich im Internet so direkt gar nichts direktes gefunden, ist das überhaupt möglich so wie ich mir das vorstelle?
Ich hoffe doch sehr, dass sich jemand die Zeit nehmen kann, mir bei den obigen Problemen weiterzuhelfen.
Gruß,
Dennis
ich bin momentan Informatik Student im dritten Semester und da ich mich in den Semesterferien langweile, wollte ich ein ewig altes Projekt von mir aus Java in C# portieren. Das ganze soll später einmal ein Programm werden, um diverse Sortieralgorithmen zu visualisieren, aber da ich erst vor ein paar Tangen angefangen habe und direkt auf die folgenden Probleme gestoßen bin, ist das natürlich nicht ansatzweise fertig.
Wie dem auch sei, seit gestern sind mir bereits Tonnen von Fragen in den Kopf gekommen, die ich nach einiger Recherche auch nicht selbst beantworten konnte. Ich hoffe jemand von Euch kann mir da weiterhelfen.
Zuerst einmal habe ich hier den Link zu einem GitRepo, damit Ihr Euch einen Gesamtüberblick verschaffen könnt: https://github.com/hurt-/SortVisualizer
Nun zu meinen Fragen:
1. In der Java Version konnte man über die deprecated Funktionen .suspend und .resume eines Threads einen Sortieralgorithmus pausieren und wiederaufnehmen. Da ich das Feature auch für die neue Version geplant habe, aber nicht auf die deprecated Funktionen zurückgreifen möchte, da überall davon abgeraten wird dies zu tun, hab ich jetzt so einige Schwierigkeiten. Bisher setze ich darauf, dies mit System.Threading.Thread zu lösen, wobei ein ManualResetEvent dazu verwendet werden soll, das Pausieren und Wiederaufnehmen zu gewährleisten.
Jetzt habe ich allerdings das Problem, dass ich die Zeit die ein Algorithmus zum sortieren braucht zurückgeben möchte. Ich hab bisher viel darüber gelesen, dass in .NET 4.5 paralleles Programmieren hauptsächlich mit Tasks implementiert wird und frage mich nun, wie ich meinen bisherigen Code so umbauen kann, dass ich 1. die "Elapsed" Zeit ordentlich returnen kann, sodass der Aufrufer mittels "await" auf den Wert warten kann. 2. Wie ich einen Task pausieren und wiederaufnehmen kann.
Ich habe hier eine Frage dazu auf StackOverflow gefunden, aber leider werde ich daraus überhaupt nicht schlau. Kann mir da jemand weiterhelfen?
2. Wie genau verhindere ich, dass mein "RepaintTicker" zum erneuten Aufruf des "DrawElement" des Fensters, das Fenster übergeben bekommen muss? Auch dazu finde ich hier eine Frage auf StackOverflow, werde daraus aber auch nicht recht schlau, da die erste Antwort bereits 6 verschiedene Ansätze liefert und ich nicht weiß, welchen genau ich davon nun auf mein Szenario übertragen muss.
3. Wie extende ich das UserControl "Canvas" von WPF um die Methoden "DrawElements" und "DrawText" in das Canvas auszulagern? Meiner Meinung nach, würde das dort besser hinpassen als im aktuellen MainWindow.
Zu der Frage hab ich im Internet so direkt gar nichts direktes gefunden, ist das überhaupt möglich so wie ich mir das vorstelle?
Ich hoffe doch sehr, dass sich jemand die Zeit nehmen kann, mir bei den obigen Problemen weiterzuhelfen.
Gruß,
Dennis