Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fehler bei Thread.Suspend (https://www.delphipraxis.net/13257-fehler-bei-thread-suspend.html)

Generalissimo 14. Dez 2003 23:33


Fehler bei Thread.Suspend
 
Hallo,

ich hab einen normalen Thread erzeugt.
Um ihn zu testen (anhalten & weiter) hab ich unter 2 Button
Code:
//Stopp-Button
MyThread.Suspend
und
Code:
//Weiter-Button
MyThread.Resume
gelegt.

Jetzt bekomm ich den Fehler: Thread-Fehler: Zugriff verweitgert (5)
und zwar nur wenn ich das Programm starte und dann auf anhalten gehe.
Gehe ich erst auf Weiter und dann auf Anhalten kommt er nicht.
Mein Thread wird mit:
Code:
 MyThread:=TMyThread.Create(False);
erzeugt.

Hat jemand ne Idee?

Kamil 14. Dez 2003 23:56

Re: Fehler bei Thread.Suspend
 
Wie sieht der Konstruktor von TMyThread aus?

Generalissimo 15. Dez 2003 10:06

Re: Fehler bei Thread.Suspend
 
Moment:

Code:
constructor TMyThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
FErrorList:=TStringList.Create;
FErrorList.LoadFromFile('C:\ErrorList.txt');
FCallList:=TStringList.Create;
FCallList.LoadFromFile('C:\CallList.txt');
FCapi:=TCapi.Create(nil);
FCapi.OnIncomeCall:=FCapiIncomeCallProc;
FCapi.OnError:=FCapiErrorProc;
FCapi.DoListen([ANALOG, DIGITAL]);
end;
In der Execute Prozedure ist nix. Soll, wie man oben sieht, ein Thread werden, der alle Anrufe über die Capi aufzeichnet.

Kamil 15. Dez 2003 10:14

Re: Fehler bei Thread.Suspend
 
ist die Execute Prozedur wirklich leer? also gar nichts drin?
Wenn die Execute Prozedur abgelaufen ist ist dein Thread zu Ende.
Dann musst du ihn neu starten.

Versuchs mal so:
Delphi-Quellcode:
procedure TMyThread.Execute;
begin
  while not Terminated do
    Sleep(10000);
end;
Jetzt kannst du den Thread anhalten und weiterlaufen lassen und mit Terminate beenden.

Noch ne Frage:
Warum verwendest du Threads wenn du nichts in der Execute Prozedur stehen hast????

Generalissimo 15. Dez 2003 10:21

Re: Fehler bei Thread.Suspend
 
Juhu das war es. Danke!!

Ich nutze ein Thread, weil das die Vorbereitung für eine Service-Anwendung ist. Damit lässt
es sich schön einfach Pause, Weiter etc. eines Windowsdienstes implementieren.
Zudem kann ich dann in der Service-Anwendung noch andere Services einbauen.

Riesen Dank nochmal


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