![]() |
TThread Problem
Hi,
ich habe eine problem in TThread klasse der Delphi festgestellt, dazu eine beispiel:
Delphi-Quellcode:
TMyThread = class(TMyThread)
private FValue,FTrys: integer; FGo: boolean; protected procedure Execute; override; procedure Go; public constructor Create; procedure Start(Value: integer); property Trys: integer read FTrys; end; TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); end; var WaitEvent: TEvent; ... ... ... procedure TMyThread.Execute; begin while not Terminated do begin if FGo then Go; Sleep(1); end; end; procedure TMyThread.Go; var i: integer; begin FGo := false; i := 0; FTrys := 0; Randomize; while (i <> FValue) do //Einfach Random solange aufrufen bis die angegbene zahl rauskommt begin i := Random(FValue+1); Inc(FTrys); end; WaitEvent.SetEvent; end; procedure TMyThread.Start; begin FValue := Value; FGo := true; FOnNotify := NotifyEvent; end; ... ... WaitEvent := TEvent.Create(...); ... ... procedure TMainfrm.Button1Click(Sender: TObject); var Thread: TMyThread; begin try Thread := TMyThread.Create; Thread.Resume; Thread.Start(1564); WaitEvent.WaitFor(INFINITE); Edit1.Text := IntToStr(Thread.Trys); finally Thread.Free; end; end; das programm macht nix anderes, als das Main thread solange zu blockiern bis der erzugte thread fertig wird, aber kommischeweise wird der erzugte thread auch blockiert :?, wenn ich jetzt eine thread mit API-Befehl erzeuge geht es, aber ich verstehe nicht wieso :wall:? Das problem ist in Delphi, wenn man mit VCL arbeitet muss man auch TThread benutzen weil der VCL nicht Thread sicher ist. wäre nett wenn jemand mir weiter helfen könnte :) . Danke, Reza Golriz |
Re: TThread Problem
warum übergibst du deine "1564" nicht bevor du den Thread mit "Resume" startest? damit würdest du dir erspaaren das du vom Hauptthread unsyncronisiert Variablen in den Thread schreibst.
|
Re: TThread Problem
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 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 by Thomas Breitkreuz