Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi progressform, mehrere funktionen parallel (https://www.delphipraxis.net/94952-progressform-mehrere-funktionen-parallel.html)

stephan007 28. Jun 2007 14:14


progressform, mehrere funktionen parallel
 
hallo!

ich habe meine progressform (oben task eintragen, unten den fortschritt des einzelnen tasks und den gesamtstand mit balken und anzeige sowie geschätzter zeit) soweit fertig. wenn ich eine der funktionalitäten (balken oder tasks eintragen) aufrufe, funktioniert es problemlos. wenn ich nun aber beide gleichzeitig haben will, also von meinem testform die jeweiligen funktionen nacheinander starten will, also zuerst die "task einfügen" mittels button click starte und dann die balken-simulation dazu starte, dann funktioniert immer nur das gerade zuletzt gewählte, also die letzte aktion gewinnt.

wie kann ich erreichen, dass z.b. das einfügen in die liste unbeirrt weiterarbeitet, auch wenn ich nun die balken-simulation starte? also dass beide parallel arbeiten.

muss ich da nun vor dem aufruf der jeweiligen aktion einen thread erzeugen und diesen nach der bearbeitung wieder beenden, oder wie genau kann ich dieses parallelität erreichen.

danke für eure hilfe.

stephan.

DeddyH 28. Jun 2007 14:16

Re: progressform, mehrere funktionen parallel
 
Zitat:

Zitat von stephan007
muss ich da nun vor dem aufruf der jeweiligen aktion einen thread erzeugen und diesen nach der bearbeitung wieder beenden, oder wie genau kann ich dieses parallelität erreichen.

Du hast Dir die Antwort selbst gegeben.

stephan007 28. Jun 2007 14:31

Re: progressform, mehrere funktionen parallel
 
das heißt also, ich muss folgendes machen:

(also pseudocode)
thread erzeugen
funktion aufrufen
thread killen

ok, dann weiß ich schon, was zu tun war.

danke fürs "auf die sprünge helfen", die narkose der op gestern blockiert heute scheinbar etwas. :lol:

stephan007 29. Jun 2007 09:35

Re: progressform, mehrere funktionen parallel
 
also irgendwie bekomme ich bei der obigen variante eine sonderbare fehlermeldung von delphi.

ich mache nichts anderes als im OnCreate ein mythread.Create(false) aufzurufen und im OnDestroy ein mythread.free;

das quitiert mir delphi aber mit der meldung "abstrakter fehler" beim start des programms.
was ist denn da wieder verkehrt? ich mach doch nichts anderes, als einen thread zu erzeugen und wieder freizugeben.

den thread habe ich im private teil der formclass definiert mit mythread: TThread.

hab ich da wo einen denkfehler drinnen oder wo könnte es sich hier spießen??

denn irgendwie will das mit den threads nicht so ganz wie ich will :roll:

stephan.

OregonGhost 29. Jun 2007 09:50

Re: progressform, mehrere funktionen parallel
 
Du musst nicht eine Variable vom Typ TThread erzeugen, sondern davon eine Klasse ableiten und diese dann instanziieren. Abstrakter Fehler heißt mehr oder weniger, dass versucht wurde, eine abstrakte Klasse zu instanziieren.

stephan007 29. Jun 2007 09:53

Re: progressform, mehrere funktionen parallel
 
äh sorry, ich versteh gerade nur bahnhof. kannst du mir das bitte an hand eines codefragments zeigen?

OregonGhost 29. Jun 2007 09:57

Re: progressform, mehrere funktionen parallel
 
Da meine Syntaxkenntnisse in Delphi etwas eingerostet sind, habe ich mal nach dem nächstbesten Beitrag über TThread gesucht und poste hier den Quellcode:
Delphi-Quellcode:
uses
  Classes;

type
  TMyThread = class(TThread)
  private
    { Private-Deklarationen }
  protected
    procedure Execute; override;
  end;

implementation


procedure TMyThread.Execute;
begin
// Tue etwas
end;
In deinem Hauptformular kannst du dann zum Beispiel statt deiner Variablen vom Typ TThread eine vom Typ TMyThread erzeugen.

stephan007 29. Jun 2007 10:28

Re: progressform, mehrere funktionen parallel
 
ups, das wird ja aufwändiger als ich gedacht habe, vorallem welche aktion soll ich im execute haben?

ich will ja nur einen thread erzeugen und wieder löschen.

und das auch nur, damit ich in ein formular was einfügen kann und gleichzeitig die fortschrittsbalken anpassen kann. also dass zwei funktionen parallel laufen.

deshalb frage ich mich auch, welche funktionalität ich da im execute reinpacken soll, muss respektive kann. :roll:

ich glaube, ich mach mich mal auf die suche nach einem beispiel, in welchem threads verwendet werden und sowas ähnliches passiert, vielleicht wirds mir dann klarer.

Luckie 29. Jun 2007 10:31

Re: progressform, mehrere funktionen parallel
 
Guck mal hier: http://delphitutorials.michael-puff.de

DelphiManiac 29. Jun 2007 10:59

Re: progressform, mehrere funktionen parallel
 
Luckie hat Recht, guck dir mal sein (sehr gutes)
Tutorial zum Thema Threads an, dann wirst du auch die Zusammenhänge besser verstehen können.

Generell kann ich dir nur folgendes noch mit auf dem Weg geben:

- Du brauchst ja einen Thread, da du etwas parallel (ja ich weiss die wenigsten haben core duo, bzw 2 prozessoren), also
sagen wir mal Quasi-Parallel abarbeiten willst, dafür brauchst du einen Thread.
Wenn du von TThread ableitest musst du natürlich die virtuelle Execute() Methode überschreiben, da hier ja reinkommt, was der Thread dann machen soll, wenn er denn dann mal gestartet ist.

Weitere Themen, Synchronisation, Mutex..., das findest du alle bei Luckie super erklärt, also los gehts :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz