AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Probleme mit Enter/LeaveCriticalSection
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Enter/LeaveCriticalSection

Ein Thema von noisy_master · begonnen am 20. Sep 2016 · letzter Beitrag vom 22. Sep 2016
 
noisy_master

Registriert seit: 17. Jun 2009
Ort: Wolfenbüttel/Baddeckenstedt
257 Beiträge
 
Delphi XE5 Professional
 
#1

Probleme mit Enter/LeaveCriticalSection

  Alt 20. Sep 2016, 21:43
Hallo zusammen,

ich verstehe das mit der Enter/LeaveCriticalSection irgendwie nicht: bei mir schein dienicht zu locken:
Ich habe mir ein kleines eigenes logging zusammengebastelt(ja ich weiss: sowas gibt es schon fertig....dazu bitte keine Ratschläge, weil ich verstehen möchte was ich falsch mache):

Der init code(wird einmalig aufgerufen)
Delphi-Quellcode:
procedure InitLog(path : string);
begin
  InitializeCriticalSection(FLock);
end;
und das deinitialisieren
Delphi-Quellcode:
procedure FinalizeLog;
begin
  DeleteCriticalSection(FLock);
end;
Das Logging, welches aus mehreren Threads(u.a. einige Timer) aufgerufen werden kann:
Delphi-Quellcode:
procedure WriteLnLog(output : string;level:Integer=1);
var f_size : Integer;
begin
  if True then
  begin
    EnterCriticalSection(FLock);
    OutputDebugString('in');
try
   if True then
   begin
    if (not fileexists(logpath)) then
      rewrite(logfile)
    else
      append(logfile);
    if output = 'then
     writeln(logfile,.........)
   else
     writeln(logfile,........);
    closefile(logfile);
   end;
finally
  OutputDebugString('out');
  LeaveCriticalSection(FLock);
end;
  end;
end;
Wie man sieht habe ich outputdebugstring drin, und damit sollte man abwechselnd in,out,in,out,in,out,...
erwarten. Leider bekomme ich manchmal:

Debug-Ausgabe: in Prozess xxx.exe (3332)
Debug-Ausgabe: in Prozess xxx.exe (3332)
Debug-Ausgabe: out Prozess xxx.exe (3332)
Erste Gelegenheit für Exception bei $7C812A7B. Exception-Klasse EInOutError mit Meldung 'E/A-Fehler 103'. Prozess xxx (3332)

Warum die exception kommt ist klar: da ist die datei einfach zu, aber was mich wundert ist warum ich überhaupt 2* in diese sektion komme.

Kann mir mal irgendjemand erklären was ich da falsch mache? (nebenbei:ist BDS2006)

Danke schon malfür eure Mühe!
Dirk
  Mit Zitat antworten Zitat
 

 

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 05:41 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