Delphi-PRAXiS
Seite 3 von 8     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Workerthread: Der Diener im Hintergrund (https://www.delphipraxis.net/93835-workerthread-der-diener-im-hintergrund.html)

alzaimar 14. Jun 2007 13:12

Re: Workerthread: Der Diener im Hintergrund
 
Zitat:

Zitat von Daniel
Zitat:

Zitat von alzaimar
Ich kann meinen Beitrag oben nicht mehr editieren, weil er zu alt ist.

:shock:
Kinderchen, so sagt doch was. :stupid: Ich habe die Edit-Limitierung aus dieser Rubrik jetzt rausgenommen. *zupf*

Papi, hab ich, aber ich hab Onkel Matze Bescheid gesagt, oder pennt der noch?

Jut, dann werdick mal, gelle?

[edit]lethargische Unterstellungen hinzugefügt[/edit]

alzaimar 14. Jun 2007 22:28

Re: Workerthread: Der Diener im Hintergrund
 
Threadpool Version 0.1 fertig zum Testen und im 1.Post verfügbar.

kalmi01 15. Jun 2007 12:30

Re: Workerthread: Der Diener im Hintergrund
 
Zitat:

Zitat von alzaimar
Threadpool Version 0.1 fertig zum Testen und im 1.Post verfügbar.

Jau,
und da dab ich auch gleich auf einen Fehler, Prog einfach über Close-Button schliessen:
Delphi-Quellcode:
Destructor TWorkerThreadJobList.Destroy;
Begin
  Clear;
  fJobs.Free;                       <<< EListError: Listenindex überschreitet Maximum(0)
  CloseHandle(fSemaphore);
End;
Memory-Leak in Zeile 154 der csWorkerThreadPool.pas:
Delphi-Quellcode:
    For i := 0 To L.Count - 1 Do
      TWorkerThreadJob(L[i]).Free;     <<<< hier
    L.Clear;
Memory-Leak in der finalization

kalmi01 15. Jun 2007 12:32

Re: Workerthread: Der Diener im Hintergrund
 
Zitat:

Zitat von alzaimar
Die beiden Units (csWorkerThread und csWorkerThreadpool) verwenden teilweise die gleichen Bezeichner, sollten also nicht gemeinsam in einem Projekt verwendet werden.

Hab mir den Code noch nicht näher angesehen, aber lässt sich das nicht sinnvoller Weis zusammenführen ?

alzaimar 15. Jun 2007 12:42

Re: Workerthread: Der Diener im Hintergrund
 
Zitat:

Zitat von kalmi01
Zitat:

Zitat von alzaimar
Die beiden Units (csWorkerThread und csWorkerThreadpool) verwenden teilweise die gleichen Bezeichner, sollten also nicht gemeinsam in einem Projekt verwendet werden.

Hab mir den Code noch nicht näher angesehen, aber lässt sich das nicht sinnvoller Weis zusammenführen ?

Na ja, vielleicht. Ich wüsste aber nicht, wieso. Denn Du kannst auch einfach einen ThreadPool mit einem Thread instantiieren und dann hast Du das gleiche Ergebnis.

alzaimar 15. Jun 2007 12:49

Re: Workerthread: Der Diener im Hintergrund
 
Zitat:

Zitat von kalmi01
Delphi-Quellcode:
    For i := 0 To L.Count - 1 Do
      TWorkerThreadJob(L[i]).Free;     <<<< hier
    L.Clear;
Memory-Leak in der finalization

Schleifenvariable ist Cardinal, L.Count (=0) - 1 als Cardinal gecastet ist dann doch etwas zu groß.. Daher der Müll..

Neue Version im 1.Post

kalmi01 15. Jun 2007 13:14

Re: Workerthread: Der Diener im Hintergrund
 
Zitat:

Zitat von alzaimar
Neue Version im 1.Post

Demoprog starten und sofort wieder schliessen ==> Memory-Leak weil fThreadPool nicht wieder freigegeben wird.

alzaimar 15. Jun 2007 14:33

Re: Workerthread: Der Diener im Hintergrund
 
Zitat:

Zitat von kalmi01
Zitat:

Zitat von alzaimar
Neue Version im 1.Post

Demoprog starten und sofort wieder schliessen ==> Memory-Leak weil fThreadPool nicht wieder freigegeben wird.

Fertig. Das war kniffeliger, als gedacht. Leider gibt es keine fertige Instanz 'PendingJobs' mehr, denn die Freigabe im Finalisierungsabschnitt kann nach der Classes-Finalisierung passieren, was bedingt durch die Verwendung von TThreads schmerzhaft und peinlich wird (wegen RTE 216).

Neue Version im 1.Post

Los, weitere Probleme :bounce1: ?

kalmi01 15. Jun 2007 14:44

Re: Workerthread: Der Diener im Hintergrund
 
Zitat:

Zitat von alzaimar
Los, weitere Probleme :bounce1: ?

Demoprog starten und (versuchen) wieder zu schliessen ==> Geht nicht, Fenster bleibt stehen.

alzaimar 15. Jun 2007 15:33

Re: Workerthread: Der Diener im Hintergrund
 
Komisch, bei mir nicht... 100 Versuche, 100 mal korrekt geschlossen. Vermutlich hast du einen langsameren Rechner ...

Das Beenden von Threads beim Programmende ist nicht Ohne, aber wenn es hier funktioniert, kann ich leider keine 'Abhilfe' schaffen. Dummerweise sind auch Versuche, eine Multithreadinganwendung zu debuggen, sehr komplex, da sich die IDE sehr oft aufhängt.

klick mal auf 'Terminate', das ruft Destroy auf und erstellt den Pool anschließend wieder.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 Uhr.
Seite 3 von 8     123 45     Letzte »    

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