Forum: PC-Programmierung Visual Basic


von Edmund P. (Gast)


Lesenswert?

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.

von Tastendrücker (Gast)


Lesenswert?

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

von Olaf Stieleke (Gast)


Lesenswert?

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.

von Tastendrücker (Andreas) (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.