![]() |
Log Datei Threadsave speichern
Wie kann ich eine Logdatei Threadsave Speichern.
Also ich habe 2 Threads die Daten per FTP Verschicken, jetzt sollen diese Threads in eine Logdatei speichern aber wenn jetzt Thread 1 und Thread 2 gleichzeitig was schreiben wollen knallst wohl. |
Re: Log Datei Threadsave speichern
Dann musst du den Zugriff mit
![]() |
Re: Log Datei Threadsave speichern
Gibts da irgendwo eine Howto wie das genau funktioniert.
|
Re: Log Datei Threadsave speichern
Du erstellst eine Klasse, von der du ein Objekt an beide Threads übergibst:
Delphi-Quellcode:
Jetzt kannst du aus jedem Thread einfach WritetoFile aufrufen und alles ist abgesichert.
type
TDatei=class constructor Create; //FCriticalSection.Create Destructor Destroy; override //fCriticalSection.free; private FFileName:string; FCriticalSection:TCriticalSection; public property FileName:string; procedure WritetoFile(const s:String); end; //... procedure TDatei.WritetoFile; begin CriticalSection.Enter; try öffne Datei schreibe Datei schließe Datei finally CriticalSection.leave; end; end; (aber wird Dateiarbeit nicht auch vom OS abgesichert :gruebel: ) |
Re: Log Datei Threadsave speichern
Zitat:
|
Re: Log Datei Threadsave speichern
Wenn die Zugriffsrechte es verbieten, dann nicht.
|
Re: Log Datei Threadsave speichern
Liste der Anhänge anzeigen (Anzahl: 1)
HI, versuchs damit.
Features: Threaded-Cached Logwriter, entwickelt für hocklast Serveranwendungen, um WorkerThreads nicht zu behindern. lg. |
Re: Log Datei Threadsave speichern
Moin.
Ist TFileStream nicht threadsafe? Habe sowas bis jetzt immer damit gemacht :gruebel: |
Re: Log Datei Threadsave speichern
Nein, ist er grundsätzlich erstmal nicht.
Wenn du aber jedem "Read/Write" die Startposition getrennt mitgibst oder jeder Thread seinen eigenen Stream auf die selbe Datei hat, dann wäre er teilweise threadsicher. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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 by Thomas Breitkreuz