Einzelnen Beitrag anzeigen

Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#41

AW: Verständnisfrage zur Thread-Synchronisation

  Alt 21. Apr 2022, 15:12
@Uwe,
Wenn ich das so anwende bekomme ich folgenden Fehler:
Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Thread_Tech_Demo.exe ist eine Exception der Klasse EThread mit der Meldung 'Start kann für einen laufenden oder unterbrochenen Thread nicht aufgerufen werden' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------

@himitsu,
Das Assigned( FOnChange ) vor Synchronize zu setzen klingt generell logisch, behebt aber das Problem nicht.
Es ist ja ein worst case Fall mit der while-Bedingung. Da werden riesige Mengen von Events ausgelöst, was auch völlig unnötig ist. Daher habe ich das jetzt so gelöst:
Delphi-Quellcode:
          IF ( I2 mod 10000 ) = 0 THEN { ! sonst blockiert auf Grund der schieren Menge von Events das Hauptprogramm }
          BEGIN
            IF Assigned( FOnChange ) THEN
            BEGIN
              Synchronize(
                PROCEDURE
                BEGIN
                  FOnChange( Self, I1, I2 ); // Beispiel
                END );
            END;
          END;


@Blup,
Zitat:
Wurde zwar eigentlich bereits gesagt, aber ist leicht zu überlesen.
Wenn man sich nicht auskennt ist es schwierig das alles so zu deuten.
Mir (uns) Neulingen in diesem Thema würde am besten ein fertiges *korrektes* Beispiel helfen. Es geht mir persönl. hier um Grundlagen für die Zukunft, die ich mir auch gerne weiter erarbeite, aber von allein kommt man da nur schwer drauf.

Schon mal vielen Dank bis hierher!

Edit: Ich hab hier mal mein jetzigen Stand angehängt.
Angehängte Dateien
Dateityp: zip Thread Sample.zip (6,2 KB, 2x aufgerufen)
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen (21. Apr 2022 um 15:43 Uhr)
  Mit Zitat antworten Zitat