Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Thread Error: Zugriff verweigert (5) ? (https://www.delphipraxis.net/93492-thread-error-zugriff-verweigert-5-a.html)

pH1L 6. Jun 2007 19:06


Thread Error: Zugriff verweigert (5) ?
 
Hallo,
Wenn ich meinen Thread per Suspend pausieren möchte,
erhalte ich die Exception "Thread Error: Zugriff verweigert (5)".

Was bedeutet sie ?
Und was könnte die Ursache sein ?

mfg Phil

Sunlight7 7. Jun 2007 02:19

Re: Thread Error: Zugriff verweigert (5) ?
 
Moin!

*Glaskugel auspack*

Hmm, schlechte Verbindung heute...

*Glaskugel wegstell*

Zeig doch lieber was Dein Thread so macht, führt eher zum Erfolg als herumraten zu müssen ;)

alzaimar 7. Jun 2007 05:19

Re: Thread Error: Zugriff verweigert (5) ?
 
Vermutlich beendet sich der Thread gerade selbst. Wenn Du ihn dann aufwecken oder schlafen legen willst, dann geht das natürlich nicht mehr.

Ich würde mit Suspend und Resume *nicht* arbeiten, weil man eben nicht weiss, was der Thread gerade macht. Ich verwende dafür fast ausschließlich Workerthreads. Die warten mit Hilfe eines Synchronisationsobjects (Semphore) auf Arbeit. Dieses Warten verbrät keine CPU-Zeit (WaitForSingleObject). Wenn Jemand möchte, da der Thread einen Job übernimmt, dann teilt er ihm das mit. Daraufhin wird die Semaphore gezuppelt, der Thread erwacht *genau an der definierten Stelle* aus seinem Dornröschenschlaf, nimmt den Job entgegen und arbeitet ihn ab.

pH1L 7. Jun 2007 11:17

Re: Thread Error: Zugriff verweigert (5) ?
 
hoi, erstmal Danke für die Antworten.

In meinem Thread rufe ich ja gerade nicht
Self.Suspend etc auf, auch außerhalb des Threads
passiert das nicht einfach ohne Klicken auf einen Button.

im Execute dürte durch das
Delphi-Quellcode:
while not Terminated do begin
  //Code
end;
doch eigentlich auch alles klar sein..

Was passiert sein könnte ist, dass in dem Thread
manchmal eine Exception durch eine TIdHTTP-Kompo (Connection Timed Out)
ausgelöst wird (wobei aber keine Messagebox erscheint).

Könnte der Thread dadurch terminiert (oä) werden ?

alzaimar 7. Jun 2007 11:25

Re: Thread Error: Zugriff verweigert (5) ?
 
Hä? Du rufst doch Suspend auf, steht jedenfalls im 1.Post.

Sobald die Execute-Methode verlassen wird (z.B. durch eine Exception), terminiert der Thread. Du musst also mit Try...Except dafür sorgen, das das nicht passiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 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