Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Selbe Funkion in TForm und TThread benutzen (https://www.delphipraxis.net/185704-selbe-funkion-tform-und-tthread-benutzen.html)

SyntaxXx 30. Jun 2015 20:48


Selbe Funkion in TForm und TThread benutzen
 
Guten Abend,
ich schreibe eine Anwendung, die eine Aufgabe erledigt.

Diese Aufgabe soll entweder im Hauptthread ausgeführt werden, oder in mehreren Unterthreads.

Jetzt ist meine Frage, muss ich die Funktion die die Aufgabe erledigt zwei mal definieren?
Also einmal
Delphi-Quellcode:
function TForm1.MeineFunktion: Boolean;
und einmal
Delphi-Quellcode:
function TThread1.MeineFunktion: Boolean;
oder kann ich diese auch nur einmal ohne TForm1 und Thread1 definieren und übergebe die Funktion dann irgendwie?

Sir Rufo 30. Jun 2015 21:22

AW: Selbe Funkion in TForm und TThread benutzen
 
Pauschal kann man das nicht sagen ...

Hat diese Funktion irgendwas mit der Form zu schaffen (wird dort auf etwas von der Form zugegriffen)?

Wenn ja, dann nicht im Thread, wenn nein, warum ist die als Methode der Form definiert?

SyntaxXx 30. Jun 2015 21:32

AW: Selbe Funkion in TForm und TThread benutzen
 
Ich hab mich sehr blöd ausgedrückt, aber deine Anmerkungen sind natürlich richtig.
Ich habs aber schon lösen können.

Delphi-Quellcode:
type
  FMeineFunktion = function (Param1: String; Param2: String): Boolean;

  TThread1 = class(Thread)
    protected
      procedure Execute;
    private
      MeineFunktion: FMeineFunktion;

...

function MeineFunktion (Param1: String; Param2: String): Boolean;
begin
  // Mache irgendwas
end;
So kann ich die Funktion von einem ButtonOnClick ohne Probleme aufrufen, und beim Thread kann ich die Funktion einfach festlegen.

Dejan Vu 1. Jul 2015 07:09

AW: Selbe Funkion in TForm und TThread benutzen
 
Normalerweise packt man das in eine eigene Klasse. Dann können TForm1 und TThread1 darauf zugreifen. Wird hier mit gemeinsamen Daten gearbeitet, müssen diese synchronisiert werden, d.h. die Klasse sorgt dafür, das immer nur einer/eine (PC! :mrgreen:) exklusiven Zugriff auf die Daten hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr.

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