AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Mehrere UploadThreads auf einen Buttonklick beenden (SOFORT)
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere UploadThreads auf einen Buttonklick beenden (SOFORT)

Ein Thema von 7down · begonnen am 3. Feb 2007 · letzter Beitrag vom 3. Feb 2007
Antwort Antwort
7down

Registriert seit: 27. Jan 2007
13 Beiträge
 
#1

Mehrere UploadThreads auf einen Buttonklick beenden (SOFORT)

  Alt 3. Feb 2007, 21:50
Hi ihr,

ich habe mehrere Threads die nacheinander ausgeführt werden. Alle beeinhalten einen IdHttp und laden jeweils eine Datei hoch.
Jetz möchte ich, wenn der User auf einen Stop-Button klickt, alle Threads terminated werden, dh:
1. Der Thread der gerade läuft soll abgebrochen werden (SOFORT)
2. Alle Threads die normalerweise nach dem aktuelle Thread dran wären, sollen beendet werden, dass sie garnicht erst zum Upload komme.

Wie realisiere ich sowas?

Danke,
7down
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Mehrere UploadThreads auf einen Buttonklick beenden (SOF

  Alt 3. Feb 2007, 22:08
Hallo!

grundsätzlich sagst du dem Thread folgendes:

Delphi-Quellcode:
with myThread do
begin
  Terminate;
  WaitFor; // bei OnCloseQuery setzen
end;
Im Thread selbst kannst du dann auf .Terminated = true
prüfen -- hier mit den vorgesehenen Methoden die
Upload-Routine ansprechen und ein "Cancel" auslösen.

Das Waitfor ist sinnvoll, um zu verhindern, dass das Programm
beendet wird, während ein Thread noch im Hintergrund
weiterläuft und vielleicht gerade versucht, seine Routinen
zu beenden -- denn ein *sofort* ist halt immer davon
abhängig, wie schnell auch diese Routinen beendet werden
können.

Wenn du die Threads in einem Array baust, kannst du
sie mit einer simplen Schleife auch schnell einzeln
durchgehen und ein "Cancel" befehlen.

Im Forum gibt es dazu auch Quellcode...


Gruß
Pfoto
Jürgen Höfs
Jürgen Höfs / picoly.de
  Mit Zitat antworten Zitat
7down

Registriert seit: 27. Jan 2007
13 Beiträge
 
#3

Re: Mehrere UploadThreads auf einen Buttonklick beenden (SOF

  Alt 3. Feb 2007, 22:42
Hi, danke für deine Antwort, aber war nicht genau das wonach ich gesucht hatte, ich versuchs mal genauer zu beschreiben:
Also ich hab mehrere Threads, alle Suspended.
Dann kümmert sich mein Prog darum, dass alle Threads der Reihe nach durchgearbeitet werden. Das funktioniert auch alles, das Problem liegt nur beim stoppen.
Delphi-Quellcode:
procedure TUploadThread.Execute;
begin
  if not (Terminated) then begin
    DataStream := TIdMultiPartFormDataStream.Create;
    [...]
    sResult := Http.Post(sURL, DataStream);
  end;
  Terminate;
end;
Das ist der Execute Code dieser einzelnen Threads. Die Threads die nach dem Stoppen noch nicht dran waren, werden durch die If-Abfrage von vornerein übersprungen, das klappt also auch.
Das einzige Problem was bleibt: der Thread der gerade am Uploaden ist.

Wie kann ich den relaitv zeitgleich mit dem Buttonklick terminieren? Ich habe schon versucht im OnIdHttpWork zu prüfen obs Terminated ist, und wenn ja, dann den IdHttp zu disconnecten, aber das hat leider nur zu ner Access Violation geführt.

Wäre euch sehr dankbar wenn ihr mir sagen könnt, wie ich den derzeit uploadenden Thread beenden kann.+


Danke
7down
  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 21:00 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