Zitat von
jfheins:
Zu der letzten Frage: Du kannst im Thread hochzählen, und gucken ob der Wert erreicht ist. Wenn das der Fall ist, rufst du ein Event im Hauptthread auf, in dem das ausgeführt wird, was passieren soll.
Um eine Methode im MainThread auszuführen musst du synchronize() verwenden.
Ah, das ist natürlich gut zu wissen.
Meine Frage ist wohl doch etwas komplizierter, konkret handelt es sich bei dem Programm was ich meine um ein Projekt für die Uni, bei dem es um eine Robotersteuerung geht. Der Roboter wird über eine
DLL gesteuert, die nur rudimentäre Befehle zum Bewegen und zur Positionsabfrage mitbringt. Über ein Skriptsystem kann man einen Bewegungsablauf für den Roboter festlegen.
Folgendes Problem: Die Befehle zur Bewegung kehren sofort zum System zurück. Ich will aber, dass der Roboter seine Bewegung erst abschließt und erst anschließend den nächsten ausführt. Bis jetzt habe ich das wie hier hingewurschtelt, und zwar mit einer Schleife, die mit while(RoboterInBewegung) abwartet und währenddessen application.processmessages aufruft, damit das Formular noch reagiert. Wie stelle ich es denn in diesem Fall am geschicktesten an? Die
DLL stellt leider keinerlei Callbacks bereit, sodass ich nur abfragen kann, ob sich der Roboter bewegt oder steht. Außerdem soll der Roboter zwischen den einzelnen Bewegungen möglichst nicht stehen, deswegen geht auch kein sleep(50) oder etwas in der Art um die CPU zu schonen. Vielleicht hast du da ja noch eine Idee?
Vielen Dank auf jedenfall für deine Hilfe!