![]() |
Programmablauf neben langer procedure
Hi,
Ich habe eine procedure, die so ca 0,5 sec dauert (wird aber noch langsamer werden, denk ich mal) und nebenbei soll ein schneller Timer eine unabhängige andere Aufgabe erfüllen, kann ich die beiden Sachen mit relativ einfachen Mitteln entkoppeln?? Hab leider nichts passendes gefunden Danke im voraus BasicX |
Re: Programmablauf neben langer procedure
Verwende Threads
|
Re: Programmablauf neben langer procedure
hab noch nie treads verwendet, gibt es eine einfache Möglichkeit eine procedure als tread zu schreiben?
|
Re: Programmablauf neben langer procedure
Ich weiß jetzt nicht, ob bei der PE die Demos dabei sind, aber falls ja, schau mal hinein, da ist ein gutes Beispiel dabei (unterschiedliche Sortier-Algorithmen).
|
Re: Programmablauf neben langer procedure
|
Re: Programmablauf neben langer procedure
kann ich einfach schreiben:
Delphi-Quellcode:
oder muss ein Tread eine eigene Function sein?
if checkbox2.Checked then
begin ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine((@Button2Click(nil)), nil, 0, ThreadID); end; oder habe ich wieder mal einen dämlichen Fehler gemacht |
Re: Programmablauf neben langer procedure
sag mal, bin ich jetzt echt zu blöd, oder kann man keine procedure als tread laufen lassen, sondern nur functions
[edit]So, habs hinbekommen. mit Treads, aber auch etwas umstrukturiert[/edit] |
Re: Programmablauf neben langer procedure
Hallo
du kannst eventuell in deiner Procedur mehrfach, eventuell innerhalb ein etwaigen Schleife plazieren:
Delphi-Quellcode:
.
Application.ProcessMessages
Damit kannst du u.a. erreichen, daß ein TTimer ausserhalb weiter benutzt werden kann. Aber Vorsicht, du gibts damit die Kontrolle zeitweise an Windows zurück, was dann wieder messages verteilen kann. Bei ungeschickter Programmierung kann das zur Folge haben, daß andere Teile deines Programmes aufgerufen werden, welche du eigentlich erst nach Ende deiner Procedure aufrufen möchstest. Im Zweifel mit Hilfe einer Statusvariable dafür sorgen, daß dies dann nicht passiert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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