Announcement

Collapse
No announcement yet.

Programm unterbrechen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Programm unterbrechen

    Hi,

    mein Problem ist folgendes: Ich habe ein Programm geschrieben, dass relativ lange auf das Diskettenlaufwerk zugreift. Aber in dieser Zeit wird kein Befehl, der über die Tastatur oder die Maus kommt bearbeitet.

    Kurz und gut: Ich möchte wissen, wie mein Programm ab und zu prüft, ob Windowsbefehle anstehen und dann stoppt, um diese auszuführen.

    Danke :-)

  • #2
    Hallo Aaron,

    ich denke mal Du suchst "Application.ProcessMessages".

    Bei prozessorlastigen Operationen ist es manchmal zwingend erforderlich diesen Befehl in den Quellcode (bei Programmschleifen in die Programmschleife) einzufügen:

    Application.ProcessMessages;

    Sonst kann es unter Umständen sogar passieren, daß Bildschirminhalte nicht refresht werden.

    Gruß
    Michae

    Comment


    • #3
      Hallo,

      es gibt für dieses Problem 2 Lösungswege:

      1. Die langandauernde Programmfunktion wird so implementiert, dass in regelmässigen Abständen dem Programm die Change gegeben wird, die eigene Botschaftswarteschlange auszulesen. Mit dem regelmässigen Aufruf von <i>Application.ProcessMessages</i> geht das am einfachsten.

      2. Die langandauernde Programmfunktion wird (wenn sie nicht in einzelne Schritte unterteilbar ist) in einen eigenen <b>Thread</B> ausgelagert. In diesem Fall läuft der primäre Thread der VCL ungestört weiter, so dass die Botschaftswarteschlange automatisch ohne Verzögerung ausgelesen wird

      Comment

      Working...
      X