c# DLL Frage
-
Hey,
ich hab mal eine Frage bzgl. der DLL Programmierung.
Es kommen ueber die Rs232 Schnittstelle Daten an. Diese werden von meiner Methode "dataReceived" aufgenommen und in eine Queue geschrieben.
Meine Hauptanwendung, welches auf die DLL zurueckgreift, ruft die Daten aus der Queue mittels "GetSample(ref ...)" ab, in der Regel alle paar Millisekunden.
Meine Frage ist nun, wie wird der Fall realisiert, wenn die Methode "GetSample" aufgerufen wird, es aber noch keine Daten vorhanden sind. Ich koennte ja pollen, dass gefaellt mir aber natuerlich nicht. In der Methode "GetSample" solange gewartet werden, bis ein Paket in der Methode "dataReceived" erhalten wurde. Habt ihr eine Idee?
Gruß
Escapete
-
Ich würde eher vorschlagen das die Dll sobald Daten rein kommen ein Event schickt "DataReceived".
Die Applikation abonniert dieses Event und reagiert dann sobald was rein kommt.
So brauchst du nicht andauern prüfen.
-
Die Sache ist ja die, dass die DLL die Daten zwischenspeichern soll und zur Entzerrung dient. Daher ist es unpassend, dass die DLL mittels Eventing die Sachen hochliefert.
-
Dann wird das Event in den selben Abständen gesendet wie die Daten bisher geholt werden
Nur mit dem unterschied das das Event nicht gesendet wird wenn nichts da istAber mal ehrlich, ich halte es für deutlich sauberer wenn man Bescheid bekommt wenn Daten rein kamen statt in regelmäßigen Abständen danach zu fragen.