RE: Event Timeout 0
Das Programm kann schon funktionieren, nur ist in dem gezeigten Teil des Programms nicht nur Timeout=0, sondern es ist auch sonst nirgendwo ein Wait zu sehen. Es ist also anzunehmen, daß die übergeordnete Schleife mit maximaler Geschwindigkeit umläuft und 100% CPU-Last verursacht.
Um die Wirkunsweise der Event-Struktur zu verstehen, hier mal 2 Beispiele zum Vergleich:
In beiden Fällen While Schleife mit Evenstruktur.
Fall 1: Timeout=0, in der Schleife ist ein Wait mit 5000ms
Fall 2: Timeout = 5000ms, kein Wait in der Schliefe.
Ohne Ereignis, das ist klar, erhöht sich der Index i der Schleife alle 5000ms.
Was passiert bei einem Ereignis?
Fall 1: Die Ereignsistruktur wird nur alle 5000ms einnmal abgefragt. Steht nach dieser Wartezeit ein Ereignis an, dann wird es bearbeitet, ansonsten wird die Ereignsistruktur gleich wieder verlassen. Es dauert also 1..4999 ms, ehe das Ereignis bearbeitet wird.
Fall 2: Die Ereignsistruktur ist immer in Wartestellung, ein Ereignis wird sofort beearbeitet. Das hat im Falle eines Ereignisses eine sofortige Indexerhöhung zur Folgge. Also z.B.: 2 sec nach dem letzten Timeout kommt Ereignis --> sofortige Abarbeitung --> dann wieder Warten bis zum vollen Timeout.
|