Guten Abend alle zusammen ! Ich habe paar Fragen zur Sub-Prozedur und MSCOMM Control unter VB 6.0. Wenn eine sehr grosse Sub-Prozedur abgearbeitet wird und gleichzeitig ein OnComm-Ereigniss auftritt,wird die Abarbeitung der Sub-Prozedur unterbrochen ?.Wenn ja wird das OnComm-Ereigniss ausgewertet und danach die Sub-Prozedur fortgesetzt ? Vielen Dank ! Mfg Edmund P.
Hallo Edmund, tritt während der Bearbeitung der Sub ein OnComm- (oder ein beliebiges anderes) Ereignis auf, wird zunächst deine Sub abgearbeitet und dann (irgendwann!!!) die OnComm-Ereignisprozedur bearbeitet. Wenn ein Datum am Comm-Port eintrifft, wird das Ereignis angemeldet. Irgendwann, wenn das Betriebsystem meint, es ist Zeit dazu, wird das Ereignis an dein Programm weitergegeben und die OnComm-Prozedur bearbeitet. (So ist das bei einem Nicht-Echtzeit-OS). Wenn Du nicht bis zum Ende deiner Sub warten willst, solltest du in dieser ein (oder mehrere) DoEvent's einbauen. Beim Erreichen eines DoEvent wird die Kontrolle an das OS abgegeben und anstehende Ereignisse können Bearbeitet werden. DoEvents sollte man vor allem in zeitintensiven Schleifen einbauen. Sonst kann mann das OS lahmlegen. Z.B. mit Do While 1=0 Loop Allerdings ist der Einsatz von DoEvent nicht zu übertreiben, sonst kommt dein Programm nur sehr zögerlich voran. TD
Sorry, das kann ich so nicht stehenlassen. Tatsächlich bemerkt das Betriebssystem praktisch sofort, das da was am SIO angekommen ist. Tatsächlich aber sendet es eine Message an dein Programm. Diese Message wird abgearbeitet und irgendwann bequemt sich das MSCOMM dazu, jenen Event auszulösen. Nun hängt es davon ab, wie oft diese Messagequeue (jedes Programm hat eine) abgearbeitet wird. Wird in deiner Sub minutenlang herumgerechnet, wird auch die Queue nicht abgefragt - man erkennt das immer daran, das man das Fenster eines solchen Programms scheinbar nicht mehr bewegen kann. In der Titelzeile taucht auch öfter ein "(keine Rückmeldung...)" auf. Ansonsten ist der Tip mit dem DoEvents goldrichtig.
@Olaf
> "Tatsächlich bemerkt das Betriebssystem praktisch sofort..."
Was heist den "praktisch sofort"??? Eben nicht deterministisch. Du
weisst eben nicht genau, wann das Ereignis vom OS an das Programm (über
die Messagequeue) weitergegeben wird.
Also meinte ich:
1. Datum trifft ein
2. OS bebekommt das mit (wann?)
3. OS sendet Message an Programm (wann?)
4. Programm nimmt Ereignis war (wann?)
5. Programm bearbeitet Ereignis (OnComm) (wann?)
Die "wann's" sollen die Nichtvorhersagbarkeit anzeigen. Aber das
alles wollte Edmund glaube ich gar nicht wissen.
Andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.