Gast
#4569477
Hallo! Ich Programmierer in C# basierend auf dem Model View ViewModel (MVVM) eine GUI, die auf Benutzereingaben hin verschiedene UDP Multicastpakete abschickt und ggfl. auf eine Antwort warten soll. Momentan erfolgt das Zusammenbauen und Abschicken asynchron zum Multicast-Empfang. Beim Empfang wird momentan geparst und dann abhängig von der Nachrichtenart verschiedene C#-"Events" getriggert. Nun muss die Anwendung aber, abhängig von vorherigen Antworten, verschiedene weitere Requests abschicken. Logisch gesehen also synchron eine Nachricht senden und blockieren bis die Antwort (oder ein Timeout) kommt und entsprechend weiter machen oder dem Benutzer neue Befehle ermöglichen. Ein Ansatz wäre, mit C#-"AutoResetEvents" in den Event-Delegaten per Set die sendende Funktion wieder freizugeben (die WaitOne aufgerufen hatte um sich zu synchronisieren). Das/die Pakete wiederum müssten über eine eigene Queue übergeben werden, damit nicht mehrere potenzielle Antworten verloren gehen. Seht ihr eine andere Möglichkeit, elegant einen synchronen Programmablauf zu erzwingen? Viele Grüße Robert