Announcement

Collapse
No announcement yet.

Endlosschleife --> Anwendung reagiert nicht --> über Button beenden

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

  • Endlosschleife --> Anwendung reagiert nicht --> über Button beenden

    Durch Klicken auf einen Button soll eine Endlosschleife ("Interruptabfrage") gestartet werden.
    Leider "reagiert die Anwendung nicht mehr", da ständig die Abfrage durchgeführt wird und sie kann nur über den Taskmanager beendet werden.

    Gibt es eine Möglichkeit einen Button bzw. die Schließen-Schaltfläche trotz Endlosschleife im selben Formular "aktiv" zu behalten und den Benutzer die Anwendung über diesen Button beenden zu lassen?

    LG
    Philipp

  • #2
    Dazu muss man die Botschaftsverarbeitung innerhalb der Schleife manuell auslösen (nicht bei jedem Durchlauf!).<BR>
    Leider weiß ich nicht, wie das in Visual C++ gemacht wird, aber vielleicht hilft Dir das ja schon...

    Grüße Joche

    Comment


    • #3
      Kann es sein, dass die Endlosschleife in Deinem Fall die CPU auf 100% hochtreibt?
      Dann würde es schon genügen, in der Schleife ein Sleep einzubauen.
      Ansonsten gibt es unter Win32 eine Menge von Synchroniserungsmöglichkeiten. Leider kann man anhand Deiner Problembeschreibung nicht sagen, was in Deinem Fall das Beste wäre.
      Unter Umständen könntest Du z.B. auch die Endlosschleife in einem eigenen Thread laufen lassen...

      Comment


      • #4
        Hallo Matthias,

        ein Sleep führt aber doch nicht dazu, daß die Botschaftswarteschlange abgearbeitet wird, oder?
        Und das ist m.E. nötig damit die App. überhaupt die Botschaft eines Buttons erhalten kann. Zumindest ist es im Borland C++ Builder so. (Vielleicht sollte ich mich hier aber auch gar nicht einmischen )

        Grüße Joche

        Comment


        • #5
          Hallo Jochen,
          das mit dem Sleep war nur für den Fall gedacht, dass die Endlosschleife die CPU auf 100% hochtreibt. Dann sieht es so aus als ob andere Dinge nicht mehr reagieren. (Die Requests landen zwar in der Botschaftenwarteschlange, aber vorher sind schon einige zig andere Botschaften aus der Schleife drin.)
          Und die einfachste (und wahrscheinlich nicht sauberste) Möglichkeit, dagegen was zu tun, ist ein kleiner Sleep.
          Das Verhalten hängt m.E: auch noch ein bisschen von der WindowsVersion ab

          Comment

          Working...
          X