[Delphi] Exception in thread

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik heb deze functie in een thread:
code:
1
2
3
4
5
6
7
8
9
10
11
procedure THTTPThread.Execute;
begin
  HTTPResult := '';
  try
    HTTPResult := HTTP.Get(FURL);
  finally
    HTTP.Free;
  end;

  PostMessage(FCallHandle, WM_USER_THREADDONE, 0, 0);
end;

Maar zodra er een Exception optreed bij die HTTP.Get (bijvoorbeeld een 404 ofzo) dan gaat hij niet verder, dus geen finally en geen PostMessage. Hoe kan dit?

Overigens zit deze thread wel in een DLL, maakt dat wat uit?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Volgens mij komt het omdat ik de DLL aan een ander process attach.
Want draai ik hem zonder de debugger dan werkt het wel goed.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 11:35

Tomatoman

Fulltime prutser

Zorg dat je heel goed begrijpt wanneer je code in een thread moet laten uitvoeren door de main thread - dat doe je via Synchronize. In het algemeen moet alle VCL-code worden gesynchroniseerd. Het zou weleens kunnen dat dat hier het probleem is. Je benadert HTTP, dat waarschijnlijk verbonden is met je user interface. In dat geval moet je HTTP.Get uitvoeren via Synchronize, waarmee de hele essentie van een aparte thread teniet wordt gedaan. Je de code wordt dan niet parellel uitgevoerd aan je main thread, maar door je main thread.

Een goede grap mag vrienden kosten.


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
De thread doet niks met de MainThread/UI, die zit zelfs niet eens in de uses. Maar het werkt al goed, zolang ik hem niet in de debugger draai.

"The shell stopped unexpectedly and Explorer.exe was restarted."