Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Button gibt sich selbst bei klick frei (https://www.delphipraxis.net/191481-button-gibt-sich-selbst-bei-klick-frei.html)

himitsu 23. Jan 2017 17:04

AW: Button gibt sich selbst bei klick frei
 
Wegoptimieren wird er das nicht. Sooooo schlau ist der nun auch nicht, daß er den Thread drumrum einfach weglässt.

Pssst: http://www.delphipraxis.net/179193-t...der-queue.html -> siehe Antwort #9 und hier nochmal die Kurzfassung davon:
Delphi-Quellcode:
TThread.CreateAnonymousThread(procedure
  begin
    Queue(AThread, procedure
      begin
        // mach hier irgendwas verzögert
      end);
  end).Start;

Der schöne Günther 23. Jan 2017 17:07

AW: Button gibt sich selbst bei klick frei
 
Wahrscheinlich hat er in der Debug-Fassung keinen Haltepunkt da Inlining nicht deaktiviert wurde und der Compiler das inlined? :gruebel:

QuickAndDirty 24. Jan 2017 08:11

AW: Button gibt sich selbst bei klick frei
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1359755)
Wahrscheinlich hat er in der Debug-Fassung keinen Haltepunkt da Inlining nicht deaktiviert wurde und der Compiler das inlined? :gruebel:

hm Der halte punkt war halt beim kompilieren weg(grün) .

QuickAndDirty 24. Jan 2017 08:24

AW: Button gibt sich selbst bei klick frei
 
Zitat:

Zitat von himitsu (Beitrag 1359754)
Wegoptimieren wird er das nicht. Sooooo schlau ist der nun auch nicht, daß er den Thread drumrum einfach weglässt.

Pssst: http://www.delphipraxis.net/179193-t...der-queue.html -> siehe Antwort #9 und hier nochmal die Kurzfassung davon:
Delphi-Quellcode:
TThread.CreateAnonymousThread(procedure
  begin
    Queue(AThread, procedure
      begin
        // mach hier irgendwas verzögert
      end);
  end).Start;

Ich mache wirklich alles im Hauptthread.... hab erst recht spät erkannt das es da noch an anderen Stellen Probleme gibt...wenn Sachen länger dauern...da steht noch ein größerer Umbau an. Ich wollte es halt möglichst leicht zu debuggen haben...

Queue funktioniert also bei mir bis her wie erwartet. Danke!

Mavarik 24. Jan 2017 09:30

AW: Button gibt sich selbst bei klick frei
 
Die Lösung hierfür heißt OnIdle...

Ich habe mir hierfür eine eigene FreeAndNIL -> ArcFreeAndNil -> KillLater geschrieben....

QuickAndDirty 24. Jan 2017 10:21

AW: Button gibt sich selbst bei klick frei
 
Theoretisch wäre wohl sowas wie ein JobScheduler das richtige, welcher dann alles was man Queued in Application.OnIdle ausführt.Aber ich hab jetzt erstmal die Thread Geschichte.

Mavarik 24. Jan 2017 11:04

AW: Button gibt sich selbst bei klick frei
 
Zitat:

Zitat von QuickAndDirty (Beitrag 1359810)
Theoretisch wäre wohl sowas wie ein JobScheduler das richtige, welcher dann alles was man Queued in Application.OnIdle ausführt.Aber ich hab jetzt erstmal die Thread Geschichte.

Ja TIdleWorker... Von Sir Rufo

QuickAndDirty 24. Jan 2017 16:13

AW: Button gibt sich selbst bei klick frei
 
Das mit TThread.Queue hatte zwar auf Windows geklappt und auch auf Android in allen Fällen außer in einem....

Nach dem Create eines Formulars wird der Style einer Componente nicht korrekt gerändert.
TThread.Queue(Liste.ApplyStyleLookup) löst das problem auf Windows
Aber in Android bleibt es falsch gerändert...

Hab dann nen JobScheduler für arme geschrieben...(hab deinen Post nicht gleich gesehen)
Damit funktioniert es wenn man

TJobScheduler.Queue(Liste.ApplyStyleLookup);
TJobScheduler.Queue(Application.ProcessMessages);

ausführt.

Es kann auch sein das nicht alles davon notwendig ist. Leider ist es ja unmöglich Erkenntnis darüber zu bekommen warum ein Style unvollständig gerändert wird.
Der JobScheduler arbeitet im Application.Idle Ereignis wenn die Liste mehr als null Jobs hat.

Warum sind so einfache Dinge, so schwierig zu lösen?

himitsu 24. Jan 2017 17:03

AW: Button gibt sich selbst bei klick frei
 
Zitat:

Delphi-Quellcode:
TJobScheduler.Queue(Application.ProcessMessages);

In ProcessMessages werden die OnIdle-Ereignisse aufgerufen. (zumindestens im Windows)
Macht das hier dann einen Kreisaufruf? :stupid: (eine Endlosschleife wäre auch cool ... je nachdem, wann man den Job aus der Queue entfernt)

Harry Stahl 24. Jan 2017 20:06

AW: Button gibt sich selbst bei klick frei
 
Wir hatten doch schon mal so ein ähnliches Problem, wo ich eine Lösung mit TTask.Run vorgeschlagen hatte, funktioniert die hier nicht?

Siehe hier:
http://www.delphipraxis.net/1358288-post7.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr.
Seite 2 von 3     12 3      

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