Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: TSwitch wieder deaktivieren?

  Alt 1. Jun 2015, 03:34
Nee, die Komponenten sind ja nicht threadsave und ohne die Synchronisierung startet das Zurücksetzen eventuell zu früh.
Die Animation scheint blockierend abzulaufen und demnach wartet das Synchronize auf das Ende.

Leider ist es dennoch unschön, denn man sieht den Schalter noch umswitchen, bevor er schnell wieder zurück springt.
Witziger Weise ist das nur so, wenn man nur IsChecked auf False setzt ... beim Anzeigen einer Exception ist diese Animation nicht mehr zu sehn.

Delphi-Quellcode:
    // btTcpOpen.IsChecked := FeigTCP.IsActive;
    TThread.CreateAnonymousThread(procedure // die Animation und eine schrottige Implementierung verhindern das Zurückschalten
    begin
      TThread.Synchronize(nil, procedure
      begin
        btTcpOpen.IsChecked := not FeigTCP.IsActive; // nochmal zurück, sonst bekommt der blöde Button es eventuell nicht mit
        btTcpOpen.IsChecked := FeigTCP.IsActive;
      end);
    end).Start;
Ja, ich schreib bei jedem Bugfix emotionsgeladen das Warum dazu, auch bei OpenSource-Codes, damit jeder weiß warum das dort so ist.
Irgendwo muß man sich ja abreagieren, sonst würde man noch öfters wo anders seine Emotionen rauslassen, wenn es sich anstaut.
(ich würde das aber nicht jedem empfehlen, sonst bestehen viele Programme nur noch aus Schimpfworten)

Ich hatte keine Lust nur wegen dem Bugfix System.Threading einzubinden, außerdem gibt es das noch nicht lange, was für eine Komponente etwas ungünstig ist, darum TThread.CreateAnonymousThread().Start statt TTast.Run(). (gut, wenn TThread.Queue() richtig arbeiten würde, wäre es noch einfacher )

Jetzt brauch ich nur noch eine Metrik, die auf Schimpfworte und das Wort Bugfix reagiert und die Anzahl der normalen Kommentare damit vergleicht.
$2B or not $2B

Geändert von himitsu ( 1. Jun 2015 um 04:44 Uhr)
  Mit Zitat antworten Zitat