Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Allgemeine Fragen zu Theads

  Alt 25. Jan 2017, 13:40
[*]Überall heißt es man soll aus Threads nicht direkt auf Form-Elemente zugreifen. Hier wird es doch gemacht. Also doch kein Problem wenn sicher ist dass kein anderer auf Form1.Memo1 zugreift? Und abgesehen davon dass es sauberer ist die Trennung per Synchronize zu machen?
Nur weil es gemacht wird, ist es nicht korrekt. Die Beispiele sind oft von Testern aus der Beta-Phase, nicht vom Embarcadero selbst.
[*]Im Execute greife ich auf die globale Liste MyList zu. Muss ich die zwingend mit System.TMonitor.Enter sperren wenn ich nur lesen will?
Es gibt, wie oben schon beschrieben auch andere Möglichkeiten, aber eine dieser solltest tue nutzen.
[*]Was kann passieren wenn ich nur Werte hinzufüge?
Zugriffsverletzungen, invalide Daten, Nichts... je nach dem, was andere Threads gerade machen
[*]Was wenn sich auch Werte ändern könnten?
^^
[*]Obwohl ich MyThread.FreeOnTerminate := true; gesetzt habe funktioniert die Assign-Abfrage in procedure TForm1.Button2Click(Sender: TObject) . Setze ich einen Haltepunkt nach dem Terminate ist MyThread nicht NIL.
Free gibt das Objekt frei, die Variabeln werden aber nicht beeinflusst.
[*]Greift man innerhalb einer Klasse besser auf die Variable oder das Property zu (FSleepTime oder SleeptTime)?
SleepTime - dann lässt sich die Implementierung ändern, ohne dass Du überall im Quellcode nachschauen musst.

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat