Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Methode als Thread starten (https://www.delphipraxis.net/179810-methode-als-thread-starten.html)

LarsSchwencke 3. Apr 2014 14:06

Methode als Thread starten
 
Hallo,

das Starten einer Methode als Thread bereitet mir schwierigkeiten.
Ich habe eine Klasse mit einer Methode (public) erstellt und möchte nun
diese Methode als Thread starten.

Als erstes habe ich eine Instanz meiner Klasse erstellt

MeineInstanz := TMeineKlasse.Create

Die Methode möchte ich jetzt aber nicht einfach durch

MeineInstanz.MeineMethode

aufrufen, sonder MeineMethode soll als Thread gestartet werden.

Kennt jemand eine Lösung und kann mir durch ein kleines Beispiel weiter helfen?

Für Infos wäre ich sehr dankbar.

Mit freundlichen Grüßen
Lars

Stevie 3. Apr 2014 14:25

AW: Methode als Thread starten
 
Wenn du eine Delphi Version ab 2009 glaub nutzt, kannst du das so schreiben:

Delphi-Quellcode:
TThread.CreateAnonymousThread(
  procedure
  begin
    MeineInstanz.MeineMethode;
  end).Start;

mjustin 3. Apr 2014 15:27

AW: Methode als Thread starten
 
Zitat:

Zitat von LarsSchwencke (Beitrag 1254557)

MeineMethode soll als Thread gestartet werden.

...

Für Infos wäre ich sehr dankbar.

Matürlich funktioniert das nur fehlerfrei, wenn MeineMethode threadsafe ist - sobald andere Threads auf Variablen zugreifen, die von MeineMethode benutzt werden, kann (und langfristig wird) es schiefgehen.

Ein Thread sollte idealerweise so gestaltet sein dass er zur Laufzeit keinerlei Kontakt zum Rest des "Universums" hat.

LarsSchwencke 11. Apr 2014 14:37

AW: Methode als Thread starten
 
Hallo,

vielen Dank für die Infos.
Es hat so Funktioniert.
Der Thread ist threadsafe :-D
Danke.

MfG
Lars


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr.

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