Hallo zusammen,
Folgendes „Problem“: ich habe in einem Form mehrere Sub (Sub1a…4a) die völlig unabhängig voneinander über eine Datenschnittstelle die gleiche Anfrage (Sub_Frage()) an eine externe Hardware stellen. Unmittelbar nach der Anfrage starte ich in ‚Sub Frage()‘ einen Timer für einen evtl. Timeout bei der Antwort. Die Antwort der ext. Hardware dauert ein wenig. Dann gammelt das Programm in ‚Sub_Frage()‘ unnötig mit Application.DoEvents() in einer while() Schleife herum bis entweder die Antwort mittels Event oder der Timeout kommt. Mit der Antwort oder der Timout-Info geht es dann im Code Sub1b..4b weiter.
Wie kann ich sowas besser lösen, ohne dieses Application.DoEvents()?
Im Grunde brauche ich einen Mechanismus der dafür sorgt, dass das Programm an der Stelle des Sub_Frage()-Aufrufs in der jeweiligen Sub1..4 mit der Rückmeldung des Moduls fortgesetzt wird.
Mein Ansatz war jetzt: Sub1a..4a rufen ‚Sub-Frage()‘ auf. Dort wird die Anfrage geschickt und es wird eine Variable gesetzt die vermerkt, welche der Sub1a…4a die Antwort möchte und ein Timer für den Timeout wird gestartet. Kommt die Antwort per Event und KEIN Timeout, wird in Event() geprüft welche Sub1a..4a die Frage gestellt hat und die Antwort möchte. Da Sub1a..4a nicht auf Rückmeldung von ‚Sub_Frage()‘ warten, wird die Abarbeitung der jeweiligen Antwort in einer separaten Sub1b..4b durchgeführt.
Folgendes „Problem“: ich habe in einem Form mehrere Sub (Sub1a…4a) die völlig unabhängig voneinander über eine Datenschnittstelle die gleiche Anfrage (Sub_Frage()) an eine externe Hardware stellen. Unmittelbar nach der Anfrage starte ich in ‚Sub Frage()‘ einen Timer für einen evtl. Timeout bei der Antwort. Die Antwort der ext. Hardware dauert ein wenig. Dann gammelt das Programm in ‚Sub_Frage()‘ unnötig mit Application.DoEvents() in einer while() Schleife herum bis entweder die Antwort mittels Event oder der Timeout kommt. Mit der Antwort oder der Timout-Info geht es dann im Code Sub1b..4b weiter.
Wie kann ich sowas besser lösen, ohne dieses Application.DoEvents()?
Im Grunde brauche ich einen Mechanismus der dafür sorgt, dass das Programm an der Stelle des Sub_Frage()-Aufrufs in der jeweiligen Sub1..4 mit der Rückmeldung des Moduls fortgesetzt wird.
Mein Ansatz war jetzt: Sub1a..4a rufen ‚Sub-Frage()‘ auf. Dort wird die Anfrage geschickt und es wird eine Variable gesetzt die vermerkt, welche der Sub1a…4a die Antwort möchte und ein Timer für den Timeout wird gestartet. Kommt die Antwort per Event und KEIN Timeout, wird in Event() geprüft welche Sub1a..4a die Frage gestellt hat und die Antwort möchte. Da Sub1a..4a nicht auf Rückmeldung von ‚Sub_Frage()‘ warten, wird die Abarbeitung der jeweiligen Antwort in einer separaten Sub1b..4b durchgeführt.