![]() |
AW: Dateidownload
Ist jetzt einfach abgetippt. Verwende ich schon seit etlichen Jahren so und bisher hat sich niemand beschwert (von XP bis Windows 10).
Ich greife doch nicht auf irgendeine VCL-Komponente zu, so schlimm kann es also nicht sein. |
AW: Dateidownload
Zitat:
Zitat:
|
AW: Dateidownload
Zitat:
Frage: wäre es denn besser ein Record in einer Unit ohne Form abzulegen, eine Instanz zu erzeugen und auf diese Daten zuzugreifen? Dann wäre Form1 weg. Dann wäre es wenigstens ein wenig OOP und Synchronize bräuchte man auch nicht mehr. |
AW: Dateidownload
Zitat:
Wenn du es erklärst haben möchtest, mache bitte einen anderen Thread auf. |
AW: Dateidownload
Zitat:
|
AW: Dateidownload
Tutorial Threads:
![]() Zitat: Zitat:
Zitat:
Delphi-Quellcode:
type
TBinFertig = procedure(const Content: String) of object; TMyOwnThread = class(TThread) private FBinFertig: TBinFertig; procedure SyncBinFertig; public property BinFertig: TBinFertig read FBinFertig write FBinFertig; end; implementation procedure TMyOwnThread.SyncBinFertig; begin if Assigned(FBinFertig) then FBinFertig(DasIstDerInhaltDerWebseite); end; procedure TMyOwnThread.Execute; begin try // Download der Seite ... // Synchronisieren Synchronize(SyncBinFertig); except on e: exception do begin // mache hier irgendetwas mit dem Fehler. end; end; end; |
AW: Dateidownload
Heißt das also, dass man auch simple Variablen eines Records (NICHT Form1.xyz) synchronisieren muss?
Zum Beispiel EinRecord.sHTML := {SeiteDownloaden}; ? |
AW: Dateidownload
Solange der Record NUR im Thread Kontext Verwendung findet ist es entspannt. Ansonsten SYNCRONIZE und Event...
|
AW: Dateidownload
Hmm..
(Wiederholt in mehreren Posting hier im Forum!!!) ;) Zitat:
Wenn auf Variablen sowohl innerhalb des Threads(Execute) wie auch von außerhalb des Threads (Form.OnButtonClick) zugegriffen werden, dann MUSS IMMER Threadsave (Sychronisiert/Critical Section/SendMessage) gearbeitet werden!!! |
AW: Dateidownload
Man muss nur immer sehen, ob Synchronize oder CriticalSection für einen angemessen ist denn beide tun unterschiedliche Dinge soweit ich weiß.
Laut diesem Thread kann man auch mehreren Threads dieselbe CiriticalSection verpassen ![]() Nach dem Motto... CriticalSection.Enter; erzeuge 2 threads und lass sie arbeiten, CriticalSection.Leave; Könnte man so also den Downloadthread starten und ohne Synchronize im Thread selber alles anfassen und ändern? Denn drumrum liegt ja die CriticalSection oder nicht? Anderenfalls wenn es nur eine Instanz gibt ist das hier vielleicht die Lösung ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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