nachträglich einen Thread aktivieren ? [erledigt]

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

nachträglich einen Thread aktivieren ? [erledigt]

Beitrag von AUGE_OHR »

hi,

angenommen ich will viele Dateien kopieren und starte den Vorgang.

Code: Alles auswählen

aDir := Directory("*.*")
iMax := LEN(aDir)
FOR i := 1 TO iMax
    CopySH(cPath+aDir[i][F_NAME],cTarget)
NEXT
nun "merke" ich das es lange dauert und würde gerne es "nachträglich" in einem Thread laufen lassen ...
Zuletzt geändert von AUGE_OHR am Di, 17. Mär 2015 17:01, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: nachträglich einen Thread aktivieren ?

Beitrag von brandelh »

wie wäre es mit vorher ausrechnen wieviele Daten da sind ;-)

Ansonsten die Routine in eine Funktion legen und die abgearbeiteten Dateien sowie die Zeit merken.
Wenn es zu lange dauert, den Index der nächsten Datei zurückgeben und die Funktion mit diesem im eigenen Thread neu starten.
Wenn alles erledigt wurde, könnte man entweder die Anzahl +1 oder 0 zurück geben, als Kennung für alles erledigt.

Wenn du gleich einen Thread aufmachst (egal wielange es dauert, scheint mir das einfacher) ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: nachträglich einen Thread aktivieren ?

Beitrag von AUGE_OHR »

brandelh hat geschrieben:Wenn du gleich einen Thread aufmachst (egal wielange es dauert, scheint mir das einfacher) ;-)
hm ... :-k
du hast ja Recht, warum nicht gleich einen Thread benutzen ... ok dann werde ich mal umbauen, Danke.
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: nachträglich einen Thread aktivieren ? [erledigt]

Beitrag von Tom »

Es gibt m.E. auch keine Bordmittel, um Code, der nicht in einem Thread läuft, in einen Thread zu verschieben. Es wäre sehr bemerkenswert, wenn es das gäbe.

Was zur Laufzeit geht, das ist die Verlagerung der Applikation auf einen anderen Prozessor(kern). Damit wäre Dir allerdings nicht geholfen, es sei denn, der Schnipsel wäre eine Anwendung. Dann könnte er auf die Prozessorlast reagieren und sich selbst verschieben. Allerdings gibt es kein wirklich verlässliches System, um die Prozessorlast zu ermitteln. Die Pseudo-Reg-Werte, die diese Auskunft liefern, sind schon im Moment ihrer Abfrage veraltet.

Ja, gleich in einem Thread starten. Das sind in Xbase++ ohnehin nur ein paar Zeilen Code.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: nachträglich einen Thread aktivieren ? [erledigt]

Beitrag von brandelh »

Hier habe ich den Code für meine WaitBox() abgelegt: :arrow: http://www.xbaseforum.de/viewtopic.php?f=16&t=3387

Diese wird mit einem Codeblock aufgerufen, der eine Funktion durchreicht und "bitte warten" in einem modalen Fenster zeigt. Die Funktion wird dann im Hintergrund der Anzeige ausgeführt.
Wenn du da den Aufruf in einen Thread auslagerst und die Box nicht modal anzeigst (sodass man sie verschieben und weiterarbeiten kann),
dürfte das passen.
Gruß
Hubert
Antworten