AGB  ·  Datenschutz  ·  Impressum  







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

Exception bei Thread-Verwendung

Ein Thema von ManuMF · begonnen am 14. Jun 2007 · letzter Beitrag vom 19. Jun 2007
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#21

Re: Exception bei Thread-Verwendung

  Alt 17. Jun 2007, 11:15
Jetzt hab ichs verstanden

OK, dann probiere ich es mal so.
Dann muss ich nur noch ein wenig umschreiben, da vor dem Post noch die Bars auf 0 gestellt werden etc., das muss dann wohl auch noch in eine synchronisierte Prozedur... oder kann ich quasi im Thread einen Bereich als synchronisiert bestimmen? Ach so, und kann ich im Thread auf globale Variablen zugreifen?

[Edit]
Stopp, das ganze funktioniert nicht. Ich muss per ButtonClick das IdHTTP stoppen können (.disconnect). Das geht aber natürlich nicht, wenn ich es dynamisch im Thread erstelle.
[/edit]
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#22

Re: Exception bei Thread-Verwendung

  Alt 18. Jun 2007, 08:52
Zitat von ManuMF:
[Edit]
Stopp, das ganze funktioniert nicht. Ich muss per ButtonClick das IdHTTP stoppen können (.disconnect). Das geht aber natürlich nicht, wenn ich es dynamisch im Thread erstelle.
[/edit]
Doch. Du musst doch nur das 'Stopp' als Methode im Thread bereitstellen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#23

Re: Exception bei Thread-Verwendung

  Alt 18. Jun 2007, 08:58
Also z.B. MyThread.StopUpload und das im ButtonClick aufrufen?
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#24

Re: Exception bei Thread-Verwendung

  Alt 18. Jun 2007, 09:02
Jupp. Probier's. In der StoppHttp-Methode solltest Du mit etwas Glück nur Disconnect aufrufen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#25

Re: Exception bei Thread-Verwendung

  Alt 18. Jun 2007, 15:28
Ja, genau so hab ich es vorher gemacht.

Ich habe das Ganze nun umgesetzt. Es besteht hier aber weiter das Problem, dass das Programm nur regiaert, wenn ich im (synchronisierten) work-Update-Event ProccessMessages ausführe, sonst gar nicht. Ich habe das so wie oben vorgeschlagen angelegt, also im onWork wird eine Prozedur synchronisiert aufgerufen, die die Progresbars setzt.

Liegt es vielleicht daran, dass ich das Uploaden als Funktion anlege, da ich wissen muss, ob er fehlgeschlagen ist? Hier ein bisschen Code:
Delphi-Quellcode:
function TUploadThread.DoUpload(URL: String; Stream: TStream; RCT: String; out AW: String): Boolean;
begin
  IdHTTPC.Request.ContentType := RCT;

  result := true;

  try
    AW := IdHTTPC.Post(URL, Stream);
  except
    result := false;
  end;
end;

// Aufruf in einer "normalen" Prozedur außerhalb des Threads

  if (UploadThread.DoUpload(DURL, Stream, RCT, AW)) then
    LogFeld.Items.Add(' Erfolgreich.')
  else
    [Fehlerbehandlung]
ansonsten wenigstens keine AVs oder sonstige Probleme
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#26

Re: Exception bei Thread-Verwendung

  Alt 18. Jun 2007, 16:04
Du rufst doch gar keinen Thread auf!

Die Arbeit des Threads wird durch seine Execute-Methode definiert. Dort, und nur dort arbeitet der Thread im Hintergrund.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#27

Re: Exception bei Thread-Verwendung

  Alt 18. Jun 2007, 17:15
Ach so. Dann bringt aber der Vorschlag von C.Schoch bzw. DGL-luke nichts, oder?
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
C.Schoch

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

Re: Exception bei Thread-Verwendung

  Alt 18. Jun 2007, 21:01
Hi,
Klar bringen unsere Vorschläge etwas, du solltest den Thread nur auch mal anschmeißen und nicht eine im Thread deklarierte Funktion aus dem Haupthread aufrufen.

Ich hab mal auf die schnelle ne Demo zusammengebaut allerdings einen Download (Upload ist aber gleich zu implementieren), Fehlerbehandlung usw sind noch nachzurüsten.

Um die Meldung "Fehler" zu provozieren einfach das Programm mir der Firewall blockieren.

Edit: Vieleicht solltest du dich erstmal mit den Grundlagen von Threads vertraut machen z.B. mit Luckies Thread Tutorial (Threads_mit_Delphi.pdf)
Angehängte Dateien
Dateityp: rar downloadthread_999.rar (248,2 KB, 32x aufgerufen)
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#29

Re: Exception bei Thread-Verwendung

  Alt 18. Jun 2007, 23:11
(Der Fehler liegt wohl an einem Verständnisproblem. Soweit wie möglich bin ich das Tutorial nämlich schon durchgegangen.)

Aber ich pendele hier ständig von einem Problem zum nächsten: Dein Beispiel ist super (danke dafür!), aber es berücksichtigt wieder nicht, dass ich das IdHTTP per Buttonclick stoppen können muss. Außerdem geschieht der Upload in einer Schleife. Was muss ich da tun? Den Thread jedes mal wieder neu erzeugen und starten?
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
C.Schoch

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

Re: Exception bei Thread-Verwendung

  Alt 19. Jun 2007, 19:27
Hi,
Ich will dir ja nicht die Lösung auf dem Silbertablett präsentieren, du willst doch auch was lernen oder?

Das mit dem Abbruch ist einfach, hierfür besitzt ein Thread Objekt die Eigenschaft Terminated.

Den Thread würde ich nicht jedes mal neu starten. Ein Ansatz wäre dem Thread eine Liste mit Urls zu übergeben, die er dann abarbeitet.
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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 06:33 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