AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Thread in der Klasse

Ein Thema von Megamorph · begonnen am 26. Dez 2008 · letzter Beitrag vom 27. Dez 2008
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Problem mit Thread in der Klasse

  Alt 27. Dez 2008, 11:45
Ah, Luckie. Hups.

Siehst du, man sieht den Wald vor lauter Bäumen nicht. Du hast eine Klasse deklariert und übergibst einen Methodenzeiger. Obwohl, nee. Das ist gar kein Methodenzeiger, denn da ist ja kein Objekt instantiiert. Innerhalb der Methode greifst Du aber auf eine private Variable der Klasse zu. Ohne Objekt geht das immer in die Hose.

Also nochmal:
Delphi-Quellcode:
Type
  TMyThread = Class (TThread)
    fmyObject : TWhatever;
  protected
    Procedure Execute; Override;
  Public
    Constructor Create (aMyObject : TWhatever);
  End;


Constructor TMyThread.Create (aMyObject : TWhatever);
Begin
  Inherited Create(True); // noch nicht loslaufen;
  fMyObject := aMyObject;
  Resume; // Und ab
End;

Procuedre TMyThread.Execute;
Var
  anotherObject : TMyObject;

Begin
  anotherObject := TMyObject.Create;
  Try
    While Not Terminated Do Begin
      DoSomething (fMyObject);
      DoSomethingElse (anotherObject);
    End
  Finally
    anotherObject.Free;
  End;
End;

...
Begin
  MyObject := TMyObject.Create;
  MyThread := TMyThread.Create (MyObject);
...
  MyThread.Terminate;
  MyThread.WaitFor;
  FreeAndNil (MyThread);
Zitat von Megamorph:
... aber wie soll ich in der TWorkThread.Execute auf Klassenelemente von TXxxxxxx zugreifen (vermutet nichts Falsches hinter der Klasse, ich habe sie nur unkenntlich gemacht).
Bist Du sicher, Du weisst, was (Delphi)Klassen sind bzw. wie man damit arbeitet? Oder ist das nur die übliche Betriebsblindheit? Du musst ein Objekt instantiieren, um auf Klassenelemente zugreifen zu können (Ausnahme: statische Klassenmethoden und statische Klasseneigenschaften).
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:08 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