Eigener Event Dispatcher
-
Ich bin gerade daran, eine Anwendung zur Ansteuerung eines USB-Geräts zu schreiben. Dazu mache ich eine Klasse, die die Kommunikation regelt.
Nun ist mir nicht ganz klar, wie man das sauber löst: Die Klasse muss ständig pollen, ob Daten verfügbar sind oder nicht (vom USB-Gerät her). Ein Interrupt oder sowas steht also nicht zur Verfügung. Wenn nun Daten auslesbar sind, muss ich die auslesen usw. Jetzt wie macht das mit dem ständigen Pollen sauber? Ist folgendes Konzept i.o?while (!terminate) { if (readUSBStatus() == USB_DATA_AVAILABLE) { read... if (OnDataAvailable != NULL) OnDataAvailable(...); } else { Application.ProcessMessages(); Sleep(1); } }Also einfach quasi eine Endlosschlaufe, in der ständig der Zustand abgefragt wird und die Windows Message Queue bearbeitet wird. Falls Daten kommen, ein Event der eigenen Klasse auslösen, falls eine Ereignisroutine geschrieben ist.
Ist das i.o. auf diese Weise?
- Adrian
-
Nach längerem Überlegen fällt mir wirklich nix besseres ein. Ist das wirklich *die* Lösung?
- Adrian
-
Ohne mich wirklich damit auseinandergesetzt zu haben würde ich vielleicht noch vorschlagen, das ganze in einen eigenen Thread zu packen (falls sich das while (!terminate) nicht schon darauf bezieht).