![]() |
Performance Problem mit Timern
Hi! Hab ein ziehmlich großes Problem. Ich programmiere gerade einen Formel 1 Manager. Hierfür habe ich für jedes der 20 Autos einen Timer verwendet (sehr amateurhaft ich weiß^^), mittlerweile kann ich das nicht mehr ändern, da alles darauf aufbaut. Was könnte ich machen um die Performance trotz der vielen Timer zu verbessern? kann mir vllt jemand helfen? :?: :?:
|
Re: Performance Problem mit Timern
Zitat:
|
Re: Performance Problem mit Timern
Sorry wenn ich so blöd frag, aber was meinst du denn mit Threads verwenden?
|
Re: Performance Problem mit Timern
Zitat:
![]() |
Re: Performance Problem mit Timern
ok danke... du meinst das hilft? nicht dass ich es umsonst lerne^^
|
Re: Performance Problem mit Timern
Zitat:
|
Re: Performance Problem mit Timern
ok hört sich gut an :D
hat jemand noch weitere Lösungsvorschläge? |
Re: Performance Problem mit Timern
Zitat:
Delphi-Quellcode:
Du siehst, das Prinzip ist einfach. Du musst nur darauf achten, dass sich die Threads nicht in die Quere kommen (z.B. gleichzeitiger Zugriff auf Globale Objekte).
type
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; MyThread = class(TThread) private Color : TColor; Canvas : TCanvas; protected procedure Execute; override; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); const colors : array[0..16] of TColor = (clBlue, clRed, clBlack, clGreen, clYellow, clWhite, clNavy, clPurple, clTeal, clLime, clFuchsia, clAqua, clMoneyGreen, clSkyBlue, clCream, clHighLight, clHotLight ); var i : integer; begin Randomize; for i := 0 to length(colors) -1 do begin with MyThread.Create(true) do begin color := colors[i]; Canvas := self.Canvas; Resume; end; end; end; { MyThread } procedure MyThread.Execute; var x, y : integer; begin x := 0; y := 0; while not Terminated do begin Canvas.Lock; x := Random(800); y := Random(600); Canvas.Pen.Color := Color; Canvas.LineTo(x,y); Canvas.Unlock; end; end; |
Re: Performance Problem mit Timern
|
Re: Performance Problem mit Timern
Hab jetzt eine Mischung aus beiden Vorschlägen genommen. Hab durch das Tutorial erfahren, dass der DXTimer ein Thread Timer ist und habe diesen eingesetzt. Die Performance hat sich dadurch auch erheblich verbessert, nur leider haben die Autos irgendwann Aussetzer und fahren nicht mehr weiter. Könnte es sein, dass die DXTimer aufgrund der Thread-"Hierarchie" nicht ausgeführt werden? Was könnte ich dagegen tun?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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