Einzelnen Beitrag anzeigen

C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Sendevorgang blockiert meine Software

  Alt 27. Feb 2007, 20:40
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?
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat