Ich schreibe ein Programm, das mit der von mir entwickelten Steuerungshardware kommuniziert. Die Hardware treibt Motoren und das erste, was ich damit machen will, ist einen Motor zu initialisieren. Die Hardware ist kommunikationsgesteuert. Um alles zu tun, sende ich einfach eine Nachricht über USB an die Hardware. Um einen Motor zu initialisieren, muss ich 2 Nachrichten senden; nachdem ich den ersten gesendet habe, bewegt er den Motor zu einem Sensor, und wenn er ihn erreicht, stoppt er und sendet mir eine Nachricht zurück, die mir sagt, dass er angehalten hat. An diesem Punkt sende ich ihm eine weitere Nachricht, dass er den Motor antreiben soll die entgegengesetzte Richtung sehr langsam, bis es aus dem Sensor kommt.Verwenden Sie async/await oder etwas anderes
Alle meine Kommunikation ist in einem SerialPort
DataReceived
Ereignis. Wie kann ich am besten auf die entsprechende Nachricht warten und dann die zweite Nachricht senden? Im Moment verwende ich einfach eine Eigenschaft vom Typ bool, die ich vor der Initialisierung auf true gesetzt habe, und dann in meinem Event-Handler, wenn ich die Nachricht erhalte, dass der Motor gestoppt hat und der bool stimmt, setze ich den bool zu false und sende die zweite Nachricht. Während dies funktioniert, dachte ich, dass es möglich sein könnte, async zu verwenden und abzuwarten? Und das könnte im Allgemeinen ein wenig effizienter sein? Oder gibt es einen anderen Ansatz, den ich besser machen könnte? Jede Rückmeldung/Anleitung wird sehr geschätzt!
Nicht nah genug, um ein Duplikat genannt zu werden, aber Sie können sich das Design ansehen, das ich [für eine ähnliche Antwort] (http://stackoverflow.com/questions/36066568/asynchronChucking-Avalue) kam -without-bogging-down-a-thread/36070635 # 36070635) für eine Klasse, die Anfragen an einen SeralPort stellt und asynchron auf eine Antwort wartet. –
Danke dafür, sehr nützlich! Ich werde sehen, ob ich etwas Ähnliches anpassen und implementieren kann, aber ich kann nicht die genaue Antwort verwenden, die Sie vorgeschlagen haben, da ich wirklich das Ereignis brauche, um den Empfang von Nachrichten zu handhaben. –