Einzelnen Beitrag anzeigen

mastaofdesasta

Registriert seit: 13. Sep 2006
8 Beiträge
 
#1

Modales Wartefenster, im Hintergrund läuft Thread

  Alt 21. Mai 2007, 11:53
Hallo,

ich hab ein Programm geschrieben, in dem man mehrere Dateien und Ordner auslesen und verarbeiten kann. Da die Verarbeitung ziemlich lange dauert, benötige ich ein modales Fenster, das den Wartezustand anzeigt, während im Hintergrund die Daten verarbeitet werden. Ausserdem soll es einen Abbruchbutton haben, mit dem die Aktion unterbrochen werden kann.

Bis jetzt habe ich das mit einem Thread so gelöst:

Delphi-Quellcode:
procedure UserKlicktWas;

  ImportFiles:=TImportFilesThread.Create(False);
  ImportFiles.FreeOnTerminate:=True;
  ImportFiles.OnTerminate:=ImportFilesTerminate;

  if Wartefenster.ShowModal = mrCancel then
  begin
    ImportFiles.Terminate;
  end;

procedure ImportFilesTerminate;
// das fenster wurde durch einen Klick auf Abbrechen geschlossen
  if not WarteFenster.Showing then
    MachDieVerarbeitungRückgängig
// das WarteFenster wurde noch nicht vom User geschlossen
  else
    WarteFenster.Close;
    JetztBeendeDieVerarbeitung
Das haut so auch meistens gut hin, nur manchmal bleibt das Fenster geöffnet. Ich glaube, dass der Fehler darin liegt, dass der Thread terminiert, bevor das Fenster überhaupt angezeigt wurde. Kann diese Einschätzung stimmen? Und wenn ja wie würdet ihrs angehen?

danke schon mal.
  Mit Zitat antworten Zitat