AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Thread warten

Ein Thema von RWarnecke · begonnen am 7. Okt 2006 · letzter Beitrag vom 7. Okt 2006
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#1

Auf Thread warten

  Alt 7. Okt 2006, 18:44
Hallo,

ich komme leider nicht weiter. Ich möchte das Beispiel CopyFileEx von Luckies Seite in eine FOR-Schleife packen. Bei der folgenden Procedure würden ja mehrere Threads hintereinander aufgemacht werden : (die StringListe wird beim starten des Programms gefüllt)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Params: PCopyEx;
  ThreadID: Cardinal;
  FileList : TStringList;
begin
  cancelCopy := False;
  FileList := TStringList.Create;
  New(Params);
  for i := 0 to FileList.count - 1 do
  begin
    Params.Source := 'H:\Videos ungebrannt\' + FileList.Strings[i];
    Params.Dest := 'J:\' + Filelist.Strings[i];
    Params.Handle := Handle;
    CloseHandle(BeginThread(nil, 0, @CopyExThread, Params, 0, ThreadID));
  end;
end;
Wie kann ich nach dem Befehl CloseHandle warten bis der Thread zu Ende ist ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von richie
richie

Registriert seit: 21. Apr 2006
Ort: Dresden
127 Beiträge
 
#2

Re: Auf Thread warten

  Alt 7. Okt 2006, 19:29
Vielleicht hilft Delphi-Referenz durchsuchenWaitFor.
Robert
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Auf Thread warten

  Alt 7. Okt 2006, 19:30
Oder WaitForSingleObject ...
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: Auf Thread warten

  Alt 7. Okt 2006, 19:51
Wenn ich das ganze so mache, wird immer erst die Datei kopiert nachdem der TimeOut abgelaufen ist :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Params: PCopyEx;
  ThreadID: Cardinal;
  FileList : TStringList;
  wf : DWORD
  hThread : THandle;
begin
  cancelCopy := False;
  FileList := TStringList.Create;
  New(Params);
  for i := 0 to FileList.count - 1 do
  begin
    Params.Source := 'H:\Videos ungebrannt\' + FileList.Strings[i];
    Params.Dest := 'J:\' + Filelist.Strings[i];
    Params.Handle := Handle;
    hThread := BeginThread(nil, 0, @CopyExThread, Params, 0, ThreadID);
    if hThread <> INVALID_HANDLE_VALUE then
    begin
      wf := WaitForSingleObject(hThread, 5000);
      case wf of
        WAIT_OBJECT_0: ShowMessage('Datei wurde kopiert');
        WAIT_TIMEOUT: ShowMessage('TimeOut');
        WAIT_FAILED: ShowMessage('Fehler');
      end;
      CloseHandle(hThread);
    end;
  end;
end;
Was mache ich falsch ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr.
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