Announcement

Collapse
No announcement yet.

Problem beim freigeben eines Threads(merkwürdig)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem beim freigeben eines Threads(merkwürdig)

    Hallo zusammen,
    mein Problem ist folgendes :
    Meine Klasse führt nacheinander verschiedenen DCOM Aufrufe in Threads aus.
    Ist ein Thread fertig mit seinem Aufruf, so wird in der OnTerminate Behandlungsroutine der nächste Thread aus einer Queue gelesen, gestartet und der alte Thread freigegeben.
    Bei der Freigabe dieses alten Threads kommt es allerdings zu einem sehr erstaunlichen Verhalten : das ganze klappt eine feste Anzahl von Versuchen,
    dann klappt es genau 2 Versuche nicht. Nicht klappen heisst, dass nach der Ausführung der OnTerminate Behandlung eine EAccessViolation herauskommt. Ich hab das soweit lokalisiert, dass versucht wird auf das Objekt, das den DCOM Aufruf durchführt zuzugreifen. Dieses ist zu dem zeitpunkt aber schon gar nicht mehr da(Instanzvariable des Threadobjekts).
    Die Frage ist jetzt, wer diesen Versuch unternimmt, er kommt nämlich garantiert nicht aus meinem Quellcode.
    Eine etwas genauere Untersuchung zeigte, dass das Handle des eigenltichen API Threads ordnungsgemäss geschlossen wird und die message zum Schliessen des Thread Windows auch rausgeht(sollte der Thread nciht Gescichte sein, wenn das Handle Closed ist??). Allerdings kommt die message nie in der Verarbeitungsroutine des ThreadWIndows an. Irgendwo auf dem Weg scheint etwas schief zu gehen, das eine EAccessViolation auslöst. Diese EAccesViolation stopt übrigens nicht mein Programm, das läuft lustig weiter. Sehe ich das dann richtig, dass die EAccessViolation nicht in meinem Code auftritt?
    Ich hoffe mal, mein Wirrwar sagt jetzt irgendjemandem etwas ;-)
    Danke schonmal
    Christoph

  • #2
    So ich habe immerhin eine Lösung meines Problems gefunden : Gebe ich den Thread nciht von Hand in OnTerminate frei, sondern setze FreeOnTerminate auf true, dann bekomme ich auch keine EAccessViolation mehr. Soweit so gut, aber haben die Borland Jungs nicht eigentlcih in ihre Hilfe Datei geschrieben, dass man das Thread Objekt ruhig innerhalb der Methode freigeben kann?? Ist das jetzt ein bekannter bug, oder nur in meiner Konstellation einmalig

    Comment

    Working...
    X