Einzelnen Beitrag anzeigen

dmagin

Registriert seit: 17. Jan 2003
Ort: Frankfurt
33 Beiträge
 
#2

Re: Daten sammeln und in MS SQL-Datenbank hinzufügen???

  Alt 25. Jul 2009, 09:29
hallo romber,

hast du auch sichergestellt, mit einer critical section, wenn die daten an den mssql server ge-insert-ed werden, das kein anderer die stringlist manipulieren kann. es könnte ja sein das du den insert sql mit params erstellst. genau in der zeit schiebt ein anderer thread ein neues elemnt in die liste. somit würde es erklären das dir elemente verloren gehen. auch die doppelten könnte man produzieren in dem erstmal das neue element in die db gebracht wird und nun ein neues kommt und der insert thread loslegt aber der neue eintrag noch nicht im stringlist ist da er gerade noch im reinschreiben ist.

ich vermute du hast nur eine critical section beim add in die stringlist. jedoch du musst auch beim löschen und herauslesen eine critical section einbauen. am besten benutzt du erstmal die gleiche damit alles erstmal serialisiert ist. dann müsste es laufen.

jedoch würde ich das problem etwas anders lösen.

die thread zum einsammeln kannst du lassen. diese können es auch in ein TStrings(list) reinpusten. jedoch würde ich dann auf den event itemsadd erweitern und dort den string mit übergeben. in diesem event wird dann der insert in die mssql server db ausgeführt.

beim löschen des inhaltes musst du aber auch wieder die critical section nutzen.

also summary:

bei jeder manipulation deiner TStriglist solltest du CriticalSection sauber erstellen und verlassen.

gruss daniel m
Daniel Magin
  Mit Zitat antworten Zitat