Delphi-PRAXiS
Seite 5 von 5   « Erste     345   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Verständnisfrage zur Thread-Synchronisation (https://www.delphipraxis.net/210352-verstaendnisfrage-zur-thread-synchronisation.html)

juergen 21. Apr 2022 15:12

AW: Verständnisfrage zur Thread-Synchronisation
 
Liste der Anhänge anzeigen (Anzahl: 1)
@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.

Uwe Raabe 21. Apr 2022 15:17

AW: Verständnisfrage zur Thread-Synchronisation
 
Zitat:

Zitat von juergen (Beitrag 1504875)
@Uwe,
Wenn ich das so anwende bekomme ich folgenden Fehler:

Na klar! Das muss ja auch True heißen:
Delphi-Quellcode:
  FMy_Thread2 := TTheThread2.Create(True);
  FMy_Thread2.OnChange := DoOnChange; { ! }
  FMy_Thread2.Start;

EdAdvokat 22. Apr 2022 11:44

AW: Verständnisfrage zur Thread-Synchronisation
 
Hallo zusammen,
Zitat:

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.
Ist das von #Jürgen gepostete Beispiel nun das erwähnte *korrekte* Beispiel für die gestellte Aufgabe oder sind da noch Verbesserungen angezeigt?

juergen 22. Apr 2022 13:00

AW: Verständnisfrage zur Thread-Synchronisation
 
Mein hochgeladenes Projekt beinhaltet alle Ratschläge bis hierhin.
Fehlerbehandlung im Thread: Das hatte ich mir selbst erarbeitet und hoffe es ist nun alles so richtig.

Aber für weitere Verbesserungsvorschläge wäre ich (wir) :) natürlich dankbar.

Uwe Raabe 22. Apr 2022 13:32

AW: Verständnisfrage zur Thread-Synchronisation
 
Wenn du auch an einer etwas anderen Herangehensweise an Threads in VCL-Anwendungen interessiert bist, wirst du vielleicht in diesem Artikel fündig: Async Tasks in VCL Projects

Edelfix 22. Apr 2022 14:21

AW: Verständnisfrage zur Thread-Synchronisation
 
@Uwe Sorry ich kann dein Beispiel nicht lesen. Es sieht nach Over Engineering aus. Mit Interface tue ich mich schwer.

Währe eine Interface freie Version möglich?


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr.
Seite 5 von 5   « Erste     345   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz