AGB  ·  Datenschutz  ·  Impressum  







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

Dateidownload

Ein Thema von DieFliege · begonnen am 19. Mai 2017 · letzter Beitrag vom 21. Mai 2017
Antwort Antwort
Seite 2 von 2     12   
SneakyBagels
(Gast)

n/a Beiträge
 
#11

AW: Dateidownload

  Alt 21. Mai 2017, 12:07
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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#12

AW: Dateidownload

  Alt 21. Mai 2017, 12:14
Zitat:
Verwende ich schon seit etlichen Jahren so und bisher hat sich niemand beschwert (von XP bis Windows 10).
...ich empfinde das als Zufall.
Zitat:
Ich greife doch nicht auf irgendeine VCL-Komponente zu, so schlimm kann es also nicht sein.
...was ist Form1?
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#13

AW: Dateidownload

  Alt 21. Mai 2017, 12:26
Zitat:
...ich empfinde das als Zufall.
Denke ich nicht. So schlimm kann es nicht sein, wie hier immer gepredigt wird. Denn wenn es tatsächlich so wäre, dann hätten andere und ich in den letzten, etlichen Jahren viele viele Fehler sehen müssen.

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.

Geändert von SneakyBagels (21. Mai 2017 um 12:28 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#14

AW: Dateidownload

  Alt 21. Mai 2017, 13:44
Zitat:
So schlimm kann es nicht sein, wie hier immer gepredigt wird. Denn wenn es tatsächlich so wäre...
An dieser Stelle bin ich raus. Ich habe mir kürzlich mein Maul verbrannt als ich das die Nachteile des WITH erklären wollte. Das brauche ich nicht nochmal. Ich hoffe daß du auch von anderer Stelle die Fehlerquellen dieser Konstellation gezeigt bekommst.

Wenn du es erklärst haben möchtest, mache bitte einen anderen Thread auf.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#15

AW: Dateidownload

  Alt 21. Mai 2017, 13:52
Zitat:
An dieser Stelle bin ich raus.
Das beantwortet meine Frage aber nicht, die den TE auch interessieren könnte.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#16

AW: Dateidownload

  Alt 21. Mai 2017, 14:19
Tutorial Threads: https://wiki.delphigl.com/index.php/...Multithreading

Zitat:

Zitat:
Alles was aus dem Execute aufgerufen wird hat als Kontext diesen Thread!
Zitat:
Jetzt stellt sich natürlich die Frage was muss alles synchronisiert werden?
Pauschal lässt sich nur sagen, alles was irgendwo von mehreren Threads (incl. VCL-Thread) geschrieben werden kann muss synchronisiert werden. Ich erkläre euch das mal besser an einem kleinem Beispiel:

Nehmen wir einmal an wir haben einen Webspider. Dieser soll 200 Webseiten downloaden.
Wir erstellen uns einen Thread dem ich die URL übergebe und der selbständig mit dem Laden anfängt. Wenn dieser fertig ist dann sagt er dem VCL-Thread mittels eines Events, dass er fertig ist.
Grundsätzlich werden die "Werte der Berechnung z.B" nur über Events rausgegeben. Diese werden IMMER synchronisiert.
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;
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#17

AW: Dateidownload

  Alt 21. Mai 2017, 14:24
Heißt das also, dass man auch simple Variablen eines Records (NICHT Form1.xyz) synchronisieren muss?

Zum Beispiel EinRecord.sHTML := {SeiteDownloaden}; ?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#18

AW: Dateidownload

  Alt 21. Mai 2017, 15:09
Solange der Record NUR im Thread Kontext Verwendung findet ist es entspannt. Ansonsten SYNCRONIZE und Event...
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#19

AW: Dateidownload

  Alt 21. Mai 2017, 15:16
Hmm..

(Wiederholt in mehreren Posting hier im Forum!!!)

Heißt das also, dass man auch simple Variablen eines Records (NICHT Form1.xyz) synchronisieren muss?

Zum Beispiel EinRecord.sHTML := {SeiteDownloaden}; ?


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!!!
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#20

AW: Dateidownload

  Alt 21. Mai 2017, 15:23
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 http://www.delphipraxis.net/29491-sy...der-sonst.html
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
http://www.delphipraxis.net/1137936-post3.html Post #3

Geändert von SneakyBagels (21. Mai 2017 um 16:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz