AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Applikation hängt beim Beenden. Abschießen unmöglich
Thema durchsuchen
Ansicht
Themen-Optionen

Applikation hängt beim Beenden. Abschießen unmöglich

Ein Thema von alzaimar · begonnen am 19. Jan 2009 · letzter Beitrag vom 20. Jan 2009
 
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Applikation hängt beim Beenden. Abschießen unmöglich

  Alt 19. Jan 2009, 18:30
Ahoi

Der Titel sagt schon Alles.
Wir haben hier eine Applikation, die per DLL mit einer Steuerungsschnittstelle kommuniziert. Diese ist ziemlich tief im Windows-System verwoben, was sich durch den Umstand bemerkbar macht, das die Steuerungssoftware selbst dann weiterläuft, wenn Windows mit einem BSOD abschmiert oder sonst irgendwie abgeschmiert ist (was eigentlich nicht vorkommen darf, aber so stehts im Prospekt).

Nun denn, die Schnittstelle ist also eine DLL, die statisch von Delphi geladen wird (durch die 'external' Direktive). Desweiteren laufen diverse Threads in der Anwendung. Anwender berichten nun, das diese Anwendung ab und zu beim Beenden nicht aus dem Speicher verschwindet, sie ist in der Prozessliste noch zu sehen und lässt sich durch den Taskmanager *nicht* abschießen.

Ich dachte zuerst an einen nicht terminierenden Thread, aber dann kann man die App doch abschießen, oder?

Blöderweise funktioniert ein Teil der Applikation immer noch, sodaß die Steuerungssoftware denkt, die App läuft, obwohl sie in Wirklichkeit vollkommen breit im Speicher rumgeistert und keinen Ton von sich gibt.

Meine Frage:
Kann das Hängen und vor allen Dingen das nicht-abschießen-können damit zu tun haben, das die Anwendung gerade in der DLL ist, die widerum in den Tiefen von Windows rumrödelt? Lohnt es sich also, die DLL dynamisch zu laden und bei Programmende kontrolliert zu einem bestimmten Zeitpunkt X selbst freizugeben, um diesen undeterministischen Zustand zu vermeiden? Ich würde den Aufruf der DLL sogar über eine Critical Section kapseln oder irgendwie sicherstellen, das die DLL nur dann entladen wird, wenn gerade kein Zugriff darauf stattfindet.

Bringt das was?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 19:36 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