Thread erzeugen, ausführen und wieder entfernen
-
Hi Leute,
in meinem Programm führe ich eine Funktion aus, die Dateien kopiert. Während des Kopiervorgangs, teige ich ein einer GroupBox an, dass Dateien kopiert werden.
Hier mein Pseudo Code:
void __fastcall KopiereDateien() { Zeige_GroupBox_an(); kopiere_alle_dateien(); Zeige_GroupBox_nicht_mehr_an(); }
Zur Zeit habe ich ein Shape in meiner GroupBox, um die Box zu umrahmen. Zusätzlich habe ich einen Timer mit folgenden Code:
if (Shape1->Pen->Style == psDashDotDot) { Shape1->Pen->Style = psDashDot; } else { Shape1->Pen->Style = psDashDotDot; } Application->ProcessMessages();
Mein Ziel ist während des Kopierens etwas Bewegung in dem Shape zu erzeugen, damit das Auge auf die GroupBox fällt. Leider fängt die Bewegung erst an, sobald der Vorgang des kopierens fertig ist.
Daher würde ich meine Aufgabe gerne in einem Thread starten, so das mein Pseudo Code folgt aussehen würde:
void __fastcall KopiereDateien() { Zeige_GroupBox_an(); Starte_Thread(); kopiere_alle_dateien(); Zeige_GroupBox_nicht_mehr_an(); Beende_Thread(); }
Kann mir jemand zeigen, wie ich dynamisch einen Thread erzeugen kann, der meinen Timmer beinhaltet, so das mein Ziel funktioniert?
Nils
-
Dürfte schon reichen vor dem ProcessMessages() ein Refresh() auf den Shape oder die GropBox auszuführen.
Gruß Mikel
-
HI,
danke für die Antwort, aber dies Funktioniert leider nicht. Der Timer wird komplett gestoppt! Fürn zweiten Test habe ich mir ein Beep() vor dem ProzessMessages reingebaut und solange die Dateien kopieren werden, ist das piepen auch weg.
Nils
-
Hallo,
Application->ProcessMessages() innerhalb der Funktion "kopiere_alle_dateien()"
ausführen, z.B. nach jeder DateiGruß Mikel
-
Oder das Kopieren in einen Thread verfrachten! Aber NICHT den Timer!
-
Hi,
habe das auch nun in nem Thread drinnen, auch ohne Timer. Es funktioniert auch aber nicht immer.
Der Thread muss wohl irgendwie im vorraus wissen, ob das Kopieren funktioniert oder icht, denn wenn es funtzt, dann läuft der Thread, andernfalls läuft er nicht *g*.
Nils
-
Original erstellt von <Nils Mole>:
Der Thread muss wohl irgendwie im vorraus wissen, ob das Kopieren funktioniert oder icht, denn wenn es funtzt, dann läuft der Thread, andernfalls läuft er nicht *g*.?? Wie äussert sich das?
-junix