Einzelnen Beitrag anzeigen

skyquaker

Registriert seit: 14. Sep 2006
96 Beiträge
 
Delphi 7 Professional
 
#12

Re: Sendevorgang blockiert meine Software

  Alt 27. Feb 2007, 21:04
Zitat von C.Schoch:
Hi,
Du bist auf dem richtigen Weg!
Hier mal ein erweitertes Bsp.:
Delphi-Quellcode:
var
MailThread : TMailThread;
dwWaitResult : DWORD;
begin
  MailThread := TMailThread.Create(true,Email,Opendiag.filename,globalcnt);
  MailThread.Resume; // Suspendeder Thread muss auch aufgeweckt werden
  repeat
    // Auf Thread warten
    dwWaitResult := WaitForSingleObject(MailThread.Handle, 100);
    if dwWaitResult <> WAIT_OBJECT_0 then
    begin
      if dwWaitResult = WAIT_FAILED then //Abbrechen wenn fehlgeschlagen
        break;
      Application.ProcessMessages; // GUI aktualisieren
    end;
  until dwWaitResult = WAIT_OBJECT_0; // keinen Thread mehr zum warten
  FreeandNil(MailThread); // Thread freigeben
end;
Vor oder nach FreeeandNil kannst du noch Aktionen ausführen z.B.: Fehler auswerten usw.
Das Thread Objekt "MailThread" würde ich global definieren so kannst du auch vom Abbrechen Button drauf zugreifen.
Jeder Thread besitzt außerdem die Eigenschaft Terminated mit der dieser abgebrochen werden kann.
Den abbruch einer laufenden Übertragung musst du IMO im OnTerminate vornehmen.

Wo der Runtime Error herkommt weis ich auch nicht, aber neue Frage neuer Thread!

P.S.: Einfach mal nach TThread in der Delphi Hilfe schauen.
P.P.S.: Hast du eigentlich schon mal die DP Suche benutzt Hier im Forum suchenThreads?
THX ! Weds morgen ausprobieren

Ja ich hab mir schon einige Dinge über Threads angeschaut, habs aber net hingekriegt. *schäm*
  Mit Zitat antworten Zitat