AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anonymous Methods für Sanduhr als Design Pattern

Ein Thema von bernhard_LA · begonnen am 8. Dez 2015 · letzter Beitrag vom 10. Dez 2015
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.163 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Anonymous Methods für Sanduhr als Design Pattern

  Alt 9. Dez 2015, 16:14
himitsu's Ansatz ist "eigentlich" besser, da die Procedure beliebig oft aufgerufen werden kann...
Wenn man zwischen durch aber einen anderen Cursor braucht, geht das so leider nicht.

Mit dem AutoCursor ist das auch ganz nett und kann somit auch verschiene zwischen Cursor darstellen und restaurieren..

Keinens der Beispiele ist jedoch Thread geeignet. Da man gerade Datenbankzugriffe gerne in einen Thread verlagert, sollte das Cursor setzen Threadsave sein.

Oder muss die Threadgeschichte außen drum, weil der Cursor nichts damit zu tun hat?

Geschmacksache...

Mavarik
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.527 Beiträge
 
Delphi 12 Athens
 
#2

AW: Anonymous Methods für Sanduhr als Design Pattern

  Alt 10. Dez 2015, 11:56
Einen Thread-Status würde ich aber nicht mit dem Mauszeiger darstellen ... außer den des Hauptthreads.
Also wenn das in Threads aufgerufen wird, dann würde ich dann die Funktions sperren und in Threads den Mauszeiger einfach nicht ändern.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Anonymous Methods für Sanduhr als Design Pattern

  Alt 10. Dez 2015, 12:13
Der Cursor gehört zur Anwendung und ändert die Anzeige. Ergo kann man das zum UI zählen.

Ändert man UI relevante Dinge in einem Thread? Generell nein.

Aber wie denn dann?

Recht simpel von der Theorie:

Mit dem Cursor zeigt man einen Status der Anwendung an (beschäftigt, SQL Abfrage läuft, ...).
Wenn man sich jetzt ein TApplicationState schafft und dort tragen alle Threads ein, was diese gerade machen (einfach nur arbeiten, SQL-Abfrage, ...), dann kann man den höchsten Status ermitteln und entsprechend anzeigen (jeweils im Idle-Event der Anwendung).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Bentissimo

Registriert seit: 25. Apr 2006
Ort: Friedenfels
82 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Anonymous Methods für Sanduhr als Design Pattern

  Alt 10. Dez 2015, 12:24
Nur noch mal als Ergänzung zu meinem Beitrag von gestern. Natürlich lag das Problem wie so oft zwischen den Ohren.

Das Laden der Tabelle ging so schnell, dass das Hin- und Herschalten des Mauszeigers nicht wahrnehmbar war. Und den Eindruck, dass das mit dem try...finally Block anders wäre, hatte ich natürlich auch exklusiv.

Also, langer Rede, kurzer Sinn. AutoCursor verhält sich genau wie in meinem ersten Beitrag beschrieben und liefert identische bzw. zumindest kompatible Ergebnisse.

Ob nun aber die Verwendung eines solchen Interface zu Aussagen wie "the resulting code is simpler and easier to manage" berechtigt, erschliesst sich mir noch nicht so ganz. Das Zitat stammt aus Nick Hodges' Buch "Coding in Delphi" von dem ich mir gerade eine Leseprobe angesehen habe.

Zumindest kapiere ich inzwischen aber, dass Interfaces ein Segen für Dependency Injection, Mocking und Testing sind. Hier kann ich mit Sicherheit noch eine Menge lernen!
Stephan Schmahl
  Mit Zitat antworten Zitat
Bentissimo

Registriert seit: 25. Apr 2006
Ort: Friedenfels
82 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Anonymous Methods für Sanduhr als Design Pattern

  Alt 10. Dez 2015, 12:41
Hallo Sir Rufo!

Interessanter, weil im Prinzip so simpler Ansatz!

Ähnliche Überlegungen sind auch hinsichtlich Anzeige in der Statuszeile anzustellen, sofern man denn eine solche in seinem Hauptformular verwendet.

Wenn ich das jetzt mal weiter spinnen darf. Eine public property AppStatus des Hauptformulars würde sogar einen Zugriff "von aussen" erlauben. Also z.B. wenn es eine Kreuz-Referenz zwischen Hauptformular und zugehörigen Dialogen gibt.

Dialoge könnten beim Öffnen den Status direkt setzen oder vielleicht noch besser eine entsprechende Message schicken. Der Setter der property kümmert sich dann um die Anzeige in der Statuszeile und den Mauszeiger.

Ob und wie das ganze dann noch mit Application.Idle zusammen zu bringen ist, wäre die Fleissaufgabe. Hast Du das schon einmal so realisiert? Wenn ja, würdest Du eventuell Code dazu posten?

Vielen Dank!
Stephan Schmahl
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.163 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Anonymous Methods für Sanduhr als Design Pattern

  Alt 10. Dez 2015, 15:28
Ob und wie das ganze dann noch mit Application.Idle zusammen zu bringen ist, wäre die Fleissaufgabe. Hast Du das schon einmal so realisiert? Wenn ja, würdest Du eventuell Code dazu posten?
Natürlich...

Daher würde ich es:

1. Über ein Interface realisieren damit ich mir das AutoFreeOnOutOfScope damit einkaufe..
2. Im Object setze ich nicht den Cursor selber, sondern sende eine TMessage. Hierauf kann meine UI Thread reagieren und dann mit der Info mach was sich möchte... Cursor ändern, Etwas in der Statusliste ausgeben... ggf. in ein Log usw...
3. Ich kann - falls die "Gefahr" besteht, dass es auch einem Threads kommen kann, dann bemühe ich den TIdleWorker, der im Application OnIdle dann die Sachen setzt...

Bingo...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Anonymous Methods für Sanduhr als Design Pattern

  Alt 10. Dez 2015, 16:44
Ich würde einfach eine Presenter Instanz schaffen (jeweils für VCL/FMX) und diese prüft dann bei einer IdleMessage, ob der Status (Cursor) geändert werden muss und der ändert dann bei Bedarf.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 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