Entwickler-Ecke

Sonstiges (Delphi) - TThread


O'rallY - So 15.09.02 16:38
Titel: TThread
Erstmal der Code:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
type
  TMyThread = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;

...

procedure TMyThread.Execute;
begin
   ShowMessage('Hello World!');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   MyThread: TMyThread;
begin
   MyThread := TMyThread.Create(true);
   MyThread.Priority := tpLower;
   MyThread.FreeOnTerminate := true;
   MyThread.Resume;
end;


Eine einfache Threadkonstruktion. Doch nachdem ich dann auf den Button1 drücke, und der Thread gestartet wird (so hoffe ich wenigstens :wink:) bekomme ich folgende Fehlermeldung:
'Canvas does not allow drawing.'

Ich hab mir schon ein paar Tutorials usw. angeguckt, doch irgendwie haben die mir nicht viel geholfen. Was ist daran falsch? Ich glaube ich stelle mich einfach nur blöd dran, aber es ist schon deprimierend :bawling: wenn man einen einfachen Thread nicht zum laufen bekommt, zumal Delphi einem das mit der Klasse TThread ja auch noch erleichtert :( .


O'rallY - So 15.09.02 18:29

öhm, hab ich die Frage falsch gestellt? Ich hab gedacht, dass meine Frage in Nullkommanix beantwortet werden kann... BITTE, HILFE!


Delete - So 15.09.02 18:42

Was erwartest du? :shock: Es sind gerade mal zwei Stunden um! :roll: Und es scheint noch niemand vorbeigekommen zu sein, der dir helfden könnte, soll vorkommen.

bei Delphi ist ein Threaddemo dabei im Unterverzeichnis Demos. da geht es um Sortierverfahren, musse mal guggen.


aogwaba - So 15.09.02 19:26

Hi!
in der OH steht in Bezug zu TThread.Execute:

Hinweis

Verwenden Sie die Eigenschaften und Methoden anderer Objekt nicht direkt in der Methode Execute eines Threads. Setzen Sie dazu einen separaten Prozedurenaufruf ein und rufen Sie diese Prozedur auf, indem Sie sie als Parameter an die Methode Synchronize übergeben.

cu
waba


O'rallY - So 15.09.02 19:38

Zitat:
Was erwartest du? Es sind gerade mal zwei Stunden um! Und es scheint noch niemand vorbeigekommen zu sein, der dir helfden könnte, soll vorkommen.
Ja, entschuldigung. War n bisl ungeduldig von mir (ich bins gewöhnt, superschnell Antworten zu bekommen, hier in diesem tollen Forum :wink: :lol:). Also, in Zukunft lass ich son Sch... *tief bereuh* :roll:

Zitat:
bei Delphi ist ein Threaddemo dabei im Unterverzeichnis Demos. da geht es um Sortierverfahren, musse mal guggen.


Hab ich schon angeguckt, nur nicht ganz "gecheckt". Sollte mal das ganze mal etwas genauer unter die Lupe nehmen.

Also nochmal, entschuldigung, war heut nicht so mein Tag. Musst mir verzeihen :crying:
Ok, trotzallem DANKE für die Hilfe! :)


Cashels - Mo 16.09.02 13:50

Hi,

kuck dir mal die TThread.Synchronize Methode an. Das dürfte die Lösung zu deinem Problem sein!

Gruss,
tom