Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS ios kein Multitasking... (https://www.delphipraxis.net/174936-ios-kein-multitasking.html)

Mavarik 19. Mai 2013 21:06

ios kein Multitasking...
 
Hallo!

Nachdem die SyncObj unter iOS noch nicht implementiert sind... Also ein Timer...

Aber...

Beispiel:

Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := false;
  Memo1.Lines.add('Hier bin ich');
end;

procedure TForm2.Button2Click(Sender: TObject);
var
  i : Integer;
begin
  Timer1.Enabled := true; // eine Sekunde...

  for i:=0 to 1000 do
    begin
      Spinbox1.Value := i;
      Application.ProcessMessages;
      Sleep(100);
    end;
end;
Was Passiert?

Die Spinbox zählt genüßlich bis 1000 und dann kommt der Timercall!

Funktioniert unter IOS eigentlich irgend etwas so wie man es erwartet?

Mavarik

Littleben 19. Mai 2013 22:53

AW: ios kein Multitasking...
 
Zitat:

Zitat von Mavarik (Beitrag 1215799)
Funktioniert unter IOS eigentlich irgend etwas so wie man es erwartet?

Das frage ich mich auch andauernd...

Bei der Suche wegen meinem TAniIndicator-Problem bin ich auf folgenden beitrag gestoßen: https://forums.embarcadero.com/threa...threadID=66281
Dort wird gesagt, dass Application.Processmessages unter MacOS nichts auswirkt. Wahrscheinlich unter iOS auch nicht.

Medium 20. Mai 2013 01:06

AW: ios kein Multitasking...
 
Das hat mit Multitasking vermutlich wenig zu tun. iOS nutzt halt einfach kein Messaging-System wie Windows. Ich bin mir nichtmals sicher - mangels Erfahrung - ob unter Macs ein Timer (von "ProcessMessages" mal ganz abgesehen) in dieser Form überhaupt abbildbar wäre. Wieder ein Grund, warum ich "one source, all platforms" wenn nicht für naiv, zumindest für in der Praxis an sehr viele Bedingungen geknüpft halte. Es wäre sicherlich ein schöner Traum, der in Grenzen auch mit vielen Kosten teilweise machbar ist, aber am Ende ist nativ entwickelt einfach so, wie es gedacht war.

Ausser, man hat eine Mediationsschicht, die minuziös "nativisiert" wo nötig. Das wird universell aber kaum gehen, zumindest gibt es Nischenlösungen für einzelne Zwecke. Unitiy für Spiele o.Ä. Lasset die Unkenrufe kommen, aber am Ende sind unterschiedliche System einfach... naja, unterschiedliche Systeme.

Mavarik 20. Mai 2013 23:02

AW: ios kein Multitasking...
 
Tja..

Wann wann nutzen wir einen Timer?

Genau... Wenn wir nicht extra einen Thread programmieren wollen und uns das Synchronize sparen wollen...
Die Einschränkung, dass der Timerevent "nur" kommt, wenn die VCL 0 Task zeit hat.. Fein...

Aber unter IOS & FM3 funktiniert das eben nicht...

Threads aber auch nicht, da unter ios die Semapforen und Events nicht funktionieren...

Und jetzt?

Mavarik

Olli73 21. Mai 2013 12:11

AW: ios kein Multitasking...
 
Zitat:

Zitat von Mavarik (Beitrag 1215849)
Und jetzt?

Schon blöd. Aber da du in deinem obigen Besipiel ja auch Application.ProcessMessages verwendest, würde ich einfach an der Stelle eine Prozedur aufrufen und mir vorher GetTickCount merken. In der Prozedur prüfst du dann, ob x ms vergangen sind und führst ggf. deinen Code aus.

Crocotronic 21. Mai 2013 16:06

AW: ios kein Multitasking...
 
Zitat:

Zitat von Mavarik (Beitrag 1215849)
Threads aber auch nicht, da unter ios die Semapforen und Events nicht funktionieren...

Threads und Events funktionieren doch?

Mavarik 21. Mai 2013 19:26

AW: ios kein Multitasking...
 
Zitat:

Zitat von Crocotronic (Beitrag 1215969)
Zitat:

Zitat von Mavarik (Beitrag 1215849)
Threads aber auch nicht, da unter ios die Semapforen und Events nicht funktionieren...

Threads und Events funktionieren doch?

Nur im Simulator nicht auf dem Device!

Mavarik

Crocotronic 21. Mai 2013 20:46

AW: ios kein Multitasking...
 
Da muss ich dir widersprechen. Bei meinem Live-Ticker lade ich alle 30 Sekunden XML-Dateien in einem Thread herunter. Du darfst den Thread nur nicht gestoppt kreieren.
Die App im Simulator zu testen hab ich schon lang aufgegeben, denn wenn es dort funktioniert heißt es noch lange nicht, dass es auch auf dem Device funktioniert ^^

Thomasl 21. Mai 2013 23:10

AW: ios kein Multitasking...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir gehen Threads auch auf dem iPhone.

Im Anhang ein Beispiel

Mavarik 22. Mai 2013 11:10

AW: ios kein Multitasking...
 
OK Nochmal...

Zu diesem Thema gibt es hier 2 Threads ;-)

Hier geht darum, dass ein Timer nicht aufgerufen wird, wenn die App nicht in die FMX 0-Task-Schleife kommt...
Also Zeit hat...

Application.Processmessages hilft hier auch nicht...

Der andere Thread ist hier

In diesem Thread geht es darum, das TEvents nicht unterstützt werden... Und somit keine Synchronisation zwischen Threads möglich ist...

@Thomasl Du Verwendest ja auch keine Signale... Logisch das einfache Threads funktionieren...


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