![]() |
iOS Threading unter Seattle
Mal wieder Hallo zusammen :wink:
Seit Seattle (also nicht iOS 9.2 verantwortlich denke ich, weil es mit XE8 funktioniert hat) kann ich unter iOS Threads nicht mehr gescheit einsetzen. So in etwa wird die Prozedur aufgerufen, um einen Webservice zu konsumieren und dann die Daten in eine DB zu packen.
Code:
In "loadData" sind dann der WebService und DB-Zeug in einem
procedure Form1.Button1Click(Sender:TObject);
var cn:=Connection; begin cn.loadData('thisnthat') end;
Code:
drinnen.
TThread.CreateAnonymousThread(procedure()
begin. //Webservice und DB-Zeuch end).Start; Ansonsten ist nur TfgActivityDialog noch drin. Ich habe mal versucht die Sachen in der Prozedur auszukommentieren, egal ob ich jetzt den WebService, DB-Zeug oder den ActivityDialog auskommentiert habe, freezet die App immer nach dem Thread. Ich weiss leider nicht mehr weiter, wenn ihr mehr Informationen braucht nur fragen. Vielen Dank :) |
AW: iOS Threading unter Seattle
Und der
Delphi-Quellcode:
kann das nicht auch verursachen?
TfgActivitiyDialog
|
AW: iOS Threading unter Seattle
Oh man.. Ich habe zwar oben schon geschrieben, dass ich auch schon versucht habe diesen auszukommentieren, aber da ich ja n Vollhorst bin hab ich eine Zeile vergessen.. :oops:
Ja, scheint da dran zu liegen.. Tut mir jetzt leid hier überhaupt n Thread eröffnet zu haben, manchmal entgehen einem ein paar Sachen wenn man 1-2 Tage am gleichen Problem arbeitet :lol: Jetzt ist mein Problem nur noch dass ich eine Anzeige brauche um dem User zu erklären, dass eine Operation ausgeführt die etwas länger benötigt, das TfgActivityDialog war bis jetzt das einzige das ich kannte.. Was hätte ich sonst noch für Optionen? |
AW: iOS Threading unter Seattle
Du baust dir eine Klasse, die diese Tasks verwaltet.
Nur mal ganz grob skizziert:
Delphi-Quellcode:
type
IReportProgress = interface procedure Progress( PercentProgress : Integer ); overload; procedure Progress( PercentProgress : Integer; const Info : string ); overload; end; TBackgroundRunner = class public // Diese Methoden werden nacheinander in einem Task abgearbeitet // Beim Beenden wird der Callback ausgeführt // Im Callback-Argument liegt bei einer aufgetretenen Exception die Exception procedure Execute( AProc : TProc; OnFinishCallback : TProc<TObject> ); overload; // Diese Methode kann über den Fortschritt berichten // Beim Aufruf müssen wir also eine ProgressInstanz mitgeben, die dann das // ProgressDialog-Fenster benachrichtigt procedure Execute( AProc : TProc<IReportProgress>; OnFinishCallback : TProc<TObject> ); overload; property OnStart : TNotifyEvent; // Ein Progress-Dialogfenster anzeigen property OnFinish: TNotifyEvent; // Das Progress-Dialogfenster wieder ausblenden end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz