AGB  ·  Datenschutz  ·  Impressum  







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

mehrere Datenbankzugriffe gleichzeitig

Ein Thema von cult6 · begonnen am 21. Aug 2013 · letzter Beitrag vom 21. Aug 2013
Antwort Antwort
OlafSt

Registriert seit: 2. Mär 2007
Ort: Hamburg
284 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: mehrere Datenbankzugriffe gleichzeitig

  Alt 21. Aug 2013, 13:28
E/A Fehler 32 sieht nach "File already opened" aus. Sieh zu, das die Threads nicht alle in das gleiche Logfile schreiben Oder bastel eine Klasse, die in das Logfile schreibt, aber von den Threads mit entsprechenden Daten gefüttert wird.
  Mit Zitat antworten Zitat
cult6

Registriert seit: 21. Aug 2013
13 Beiträge
 
#2

AW: mehrere Datenbankzugriffe gleichzeitig

  Alt 21. Aug 2013, 13:29
Danke, das hat mir sehr geholfen, aber nun zum nächsten Problem...

Ich habe zb 3 Threads erstellt und lasse sie hintereinander ablaufen:

thread1 := TThreadClient.Create(false);
thread2 := TThreadClient.Create(false);
thread3 := TThreadClient.Create(false);

das funktioniert auch ohne Probleme, die Threads laufen, ABER...

ich habe auf meiner Form1 eine Variable Counter, welche beim FormCreate mit 0 initialiesiert wird.
Beim TThreadClient.Execute() wird diese Variable jeweils um 1 hochgezählt. Soweit so gut...

Jetzt sollte ja eigentlich thread1 Nr1 beinhalten, thread2 Nr2 usw. aber alle 3 Threads haben Nr3.
Jemand ne Idee wie ich dem entgegenwirken kann?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: mehrere Datenbankzugriffe gleichzeitig

  Alt 21. Aug 2013, 14:47
Die Variable muss doch "im Thread" lokal gespeichert sein. Wenn alle auf die selbe Variable zugreifen, die in Form1 steht, muss die ja bei allen 3 sein.

Du kannst also schon so eine counter variable verwenden und bei jedem neuen Thread hochzählen. Der dann aktuelle Wert muss aber dann auch "im Thread" gespeichert werden.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
793 Beiträge
 
#4

AW: mehrere Datenbankzugriffe gleichzeitig

  Alt 21. Aug 2013, 15:22
ich habe auf meiner Form1 eine Variable Counter, welche beim FormCreate mit 0 initialiesiert wird.
Beim TThreadClient.Execute() wird diese Variable jeweils um 1 hochgezählt. Soweit so gut...
Wenn du es so umgesetzt hast, wie es sich anhört, ist es aber gar nicht gut.
Du darfst aus dem Thread auf die Variable Counter im Form nur über Synchronize oder eine critical section zugreifen.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.493 Beiträge
 
Delphi 12 Athens
 
#5

AW: mehrere Datenbankzugriffe gleichzeitig

  Alt 21. Aug 2013, 15:57
Der Constructor des Threads wird noch im Hauptthread ausgeführt, da darf man auch auf diese Variable zugreifen.
Besser wäre allerdings eine Klassenvariable in der Thread-Klasse geeignet.
Delphi-Quellcode:
type
  TMyThread = class(TThread)
  protected
    class var FLastNum: Integer;
    FMyNum: Integer;
  public
    constructor Create(ASuspended: Boolean); override;
    class property LastNum: Integer read FLastNum;
  end;

constructor TMyThread.Create(ASuspended: Boolean);
begin
  inherited;
  Inc(FLastNum);
  FMyNum := FLastNum;
end;
  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 13:57 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