Einzelnen Beitrag anzeigen

sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Thread in mobiler App beenden

  Alt 14. Mär 2018, 10:27
Hast Du eine Idee dazu?

Inzwischen habe ich den Event FormSaveState gefunden, der gefeuert wird wenn die App in den Hintergrund geht.
Hier habe ich dann

Delphi-Quellcode:
procedure TFormMain.FormSaveState(Sender: TObject);
begin
  if kThread <> nil then
  begin
    kThread.Terminate;
    kThread.WaitFor;
    kThread.Destroy;
    kThread := Nil;
  end;
end;
und dann

Delphi-Quellcode:
procedure TFormMain.FormPaint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  if kThread = nil then
    kThread := TKalenderThread.create;
end;
in der Hoffnung, dass beim schieben der App in den Hintergrund der Thread beendet wird und beim Paint der Form wieder einer erzeugt wird falls er noch nicht existiert.

Das funktioniert soweit:
- App starten, Thread wird erzeugt
- App in den Hintergrund, FormSaveState wird gefeuert und der Thread zerstört
- App wieder vorholen, Thread Create läuft fehlerfrei durch aber dann "Segmentation fault (11) und illegal instruction (4)!

Im Thread habe ich alles per try/except abgesichert, da läuft er nirgends rein!


Ciao
Stefan
  Mit Zitat antworten Zitat